滚动数组

  • 适用情况:数组长度很大,结果需要中间量推导但不需要保存过程量,过程中仅用到前n项

  • 优点:可以优化空间,减少内存占用(毕竟数组开得很小)

  • 主要应用于递推动态规划

  • 写法

    //斐波那契数列
    int main(){
        int i;
        long long d[3];
        d[1]=1;
        d[2]=1;
        for(i = 2;i<80;i++){
            d[0] = d[1];
            d[1] = d[2];
            d[2] = d[0]+d[1];
        }
        //[0,1,1]
        //[1,1,2]
        //[1,2,3]
        //[2,3,5]
        //……
        //由于求斐波那契数列第n项只需要求第n-1项与第n-2的和
        //所以可以利用循环数组来压缩空间
        //易知d[2]即为第i项的值
        printf("%lld\n",d[2]);
        return 0;
    }
    
posted @ 2021-11-29 11:18  Burnling  阅读(39)  评论(0编辑  收藏  举报