滚动数组

滚动数组

作用在于优化空间,主要应用在递推或动态规划中,可以循环利用空间。
例如斐波那契数列,只由前面两个元素得出下一个元素
滚动数组

int d[];
d[0] = d[1] = 1;
for(i = 2;i<80;i++)
{
   d[i%3] = d[(i-1)%3] + d[(i-2)%3];
}

二维数组滚动

int i,j,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[i][j]只依赖于d[i-1][j],d[i][j-1]
运用滚动数组

int i, j, d[2][100];
for(int i = 1;i < 100;i++)
  for(int j = 0;j < 100;j++) 
    d[i%2][j] = d[(i - 1) % 2][j] + d[i % 2][j - 1];
    // 行只和当前行和上一行有关联,行滚动,但是列不能滚动
上一篇:基于Spring3 MVC实现基于HTML form表单文件上传


下一篇:魔法数字是什么?如何用数据分析找到它