以下是自己对于滚动数组的自己理解,有错误的地方各位可以提出来。
滚动数组是DP中的其中一个简单的算法,更确切的说是一种编程思想。
简单的理解就是让数组滚动起来,每次都使用固定的几个存储空间,来达到压缩,节省存储空间的作用。
具体可以优化DP或者递推中的空间,在数据量很大的时候起到压缩的作用。
Example:
求斐波拉切数列,先用正常的方法求解。
int d[]=new int[100];
d[0]=1;d[1]=1;
for(int i=2;i<100;i++)
{
d[i]=d[i-1]+d[i-2]
}
System.out.printf("%d",d[99]);
此处可以看到这里,如果求解99位,那么需要使用将近快100个存储单元。<