一、定义
让数组滚动起来,每次都使用固定的几个存储空间,来达到压缩,节省存储空间的作用。起到优化空间,主要应用在递推或动态规划中。
因为在动态规划中当前项只依靠前几项,所以就不需要设定很大的数组,存放所有中间变量,可以把用不着的变量覆盖掉,这样设定的数组大小就大大的减小了。
例如:(优化前)
long long d[80];
d[0]=1;
d[1]=1;
for(i=2;i<80;i++)
{
d[i]=d[i-1]+d[i-2];
}
优化后:
long long d[3];
d[0] = 1;
d[1] = 1;
for(i=2;i<80;i++)
{
d[i%3]=d[(i-1)%3]+d[(i-2)%3];
}
因为d[i]只依靠d[i-1]+d[i-2],所以d数组就不用设定80个那么大了,只需要设定大小为3即可,当用不着的内容就把它覆盖掉。