滚动数组
很多时候,我们会做一些数据大的题,如求斐波那契数列第14451496144项的值。这当然可以用递归+记忆化+矩阵加速或通项公式来求解。但这时这时如果用迭代的话数组就需要开到14451496144这么大,此时占用空间太大,所以我们要引入滚动数组的概念。滚动数组其实就是通过一定运算来以时间换空间(对我这种暴力卡常党很不友好)。举个例子,斐波那契数列的迭代可以写成这个样子:
int fib[4]={0,1,1,2};
for(int i=0;i<n;i++){
a[i%3]=a[(i-1)%3]+a[(i-2)%3];
}