滚动数组
一维
原始数组:
int f[55]; f[1] = 1, f[2] = 2; for(int i=3; i<50; i++) f[i] = f[i-1] + f[i-2];
滚动数组:
int f[3]; for(int i=3; i<50; i++) f[i%3] = f[(i-1)%3] + f[(i-2)%3];
二维
原始数组:
int d[100][100]; for(int i=1;i<100;i++) { for(int j=0;j<100;j++) { d[i][j]=d[i-1][j]+d[i][j-1]; } }
滚动数组:
d[2][100]; int k = 0; for(int i=0; i<100; i++) { k ^= 1; for(int j=0; j<100; j++) { d[k][j] = d[k^1][j] + d[k][j-1]; } }
附一个用滚动数组求的题:http://acm.hdu.edu.cn/showproblem.php?pid=1024
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。