摘要: 原文地址:http://blog.csdn.net/liangneo/article/details/6770543cocos2d引擎2.0 cocos2d简介Cocos2d最初的版本是用python写的,之后被改成objectiveC,应用于iphone上,之后国内某人又根据该设计理念,将其改为C++版本cocos2dX,该版本可以在iphone,widnows,andriod三个平台上运行.最新的版本是1.0.0,该引擎C++的版本还引入了lua脚本系统.cocos2d是完全开源的引擎,开发者可以任意使用该代码而不用公开源代码.cocos2d被广泛的使用,其中包括Zynga,南宫梦等知名游 阅读全文
posted @ 2012-12-16 14:59 tsubasa_wp 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 这里用邻接矩阵来表示DAG邻接矩阵的百度百科:http://baike.baidu.com/view/549589.htm递归计算从起点到节点v的最长路径:/* -----------> 9 | |0 ---> 1 ---> 2 ---> 5 ---> 10 ----> 6 | | 3 4 | | 8 7*/#define SIZE 11int V[SIZE] = {0,1,2,3,4,5,6,7,8,9,10};int G[SIZE][SIZE] = { ... 阅读全文
posted @ 2012-12-14 15:15 tsubasa_wp 阅读(3344) 评论(0) 推荐(0) 编辑
摘要: 在《编程珠玑》里面看到个有意思的定理~经验法则。假设以年利率r%投资一笔钱y年, 金融版本的72法则指出, 如果r*y=72,那么你的投资差不多会翻倍。该近似相当准确,误差率不超过1%。72法则用户估算指数过程的增长非常便利。如果一个盘子里菌群以每小时3%的速率增长,那么其数量每天都会翻倍。由于2^10 = 1024,10次翻倍大约是1000倍,20次大约是100w倍,30次大约是10y倍。。。假设一个指数程序解决规模为n=40的问题需要10秒, 并且n每增加1运行的时间就增加12%。72法则告诉我们,n每增加6,运行时间就加倍。每增加60,运行时间就增加1000倍。附:维基:http://z 阅读全文
posted @ 2012-12-13 23:30 tsubasa_wp 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 从上往下求和, 求最大和的路径. 1 3 24 10 1分析: 从下向上求和附代码和运行结果:递推计算和递归求和, 它们都会把前一步的计算结果保存下来int n = 3;int a[4][4] = {1,0,0,0,3,2,0,0,1,10,1,0,4,3,2,20};int s[4][4];void d(int i, int j) { for ( int i = n; i >= 0; i-- ) for (int j = 0; j <=n; j++ ) s[i][j] = a[i][j] + (i == n ? 0 : (s... 阅读全文
posted @ 2012-12-13 19:20 tsubasa_wp 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 有一个2^k*2^k的方格棋盘, 恰有一个方格是黑色的, 其它为白色.用包含3个方格的L形牌覆盖所有白色方格.黑色方格不能被覆盖,且白色方格不能被两个或更多的牌覆盖.[分析] 由2^k*2^k很容易想到分治, 考虑用递归来解决.我的代码:#define SIZE 16char M[SIZE][SIZE];int P[2];char Color[4] = {'+','-','~','.'};/* + --- 0+ ++ + --- 1 + + --- 2+ + + + --- 3+ */bool containsPoint( int 阅读全文
posted @ 2012-12-13 12:57 tsubasa_wp 阅读(204) 评论(0) 推荐(0) 编辑
摘要: int main () { double a, c; double x = 0, y = 100,m; int b; scanf("%lf%d%lf",&a,&b,&c); while( y - x > 1e-5) { printf("%f ", y); m = x + (y-x)/2; double f = a; for ( int i = 0; i < b; i++ ) f += f*m/100-c; if (f<0) x = m; else y = m; } print... 阅读全文
posted @ 2012-12-12 23:00 tsubasa_wp 阅读(188) 评论(0) 推荐(0) 编辑
摘要: void partation(int size) { if (size == 1) { A[0][0] = 1; return; } partation(size/2); for ( int i = 0; i < size/2; i++ ) { for ( int j = 0; j < size/2; j++ ) { A[i+size/2][j] = A[i][j] + size/2; A[i][j+size/2] = A[i][j] + size/2; A[i... 阅读全文
posted @ 2012-12-12 22:22 tsubasa_wp 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 利用hash来进行节点判重typedef int State[9];const int MAXSTATE = 1000000;State st[MAXSTATE], goal;int dist[MAXSTATE];int vis[36288], fact[9];const int dx[] = {-1,1,0,0};const int dy[] = {0,0,-1,1};const int MAXHASHSIZE = 1000003;int head[MAXHASHSIZE], next[MAXHASHSIZE];int hash(State& s) { int v = 0; fo.. 阅读全文
posted @ 2012-12-10 15:06 tsubasa_wp 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 使用单位分数的和表示有理数。 例如 2/3 = 1/2 + 1/6; 加数不能有重复。0<a<b<1000。(有一个条件这里还没实现: 如果加数个数相同, 则最小分数越大越好。)此题目解答树宽度和深度都没有上限,不能直接用bfs或者dfs。解决方案是采用迭代加深搜索:从小到大枚举深度上限。int a, b;int tree[1000];bool dfs(int deep, int cb, int sa, int sb ) { tree[deep] = cb; int _a = sb + cb * sa; int _b = cb * sb; // 同一层向右平移, 找一个... 阅读全文
posted @ 2012-12-09 22:27 tsubasa_wp 阅读(1040) 评论(0) 推荐(0) 编辑
摘要: 输入两个整数n1, n2. 用 最少的四则运算从n1得到n2. 例如: 输入2,5, 则 2 / 2 = 1, 1 + 2 = 3, 3 + 2 = 5. 运算结果为 DIV, ADD, ADD.(好吧我偷懒把题目简化了。。)因为运算步骤可能无限长,本题的解答树是无限大的, 此题不能用回溯来解。本题要求最短过程,利用宽度优先遍历解答树。int n1, n2;char operators[4][4] = {"ADD","SUB","DIV","MUL"};int sequence[100];void bfs() { 阅读全文
posted @ 2012-12-09 20:12 tsubasa_wp 阅读(330) 评论(0) 推荐(0) 编辑