0%

滚动数组

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

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

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

  • 写法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //斐波那契数列
    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;
    }