码迷,mamicode.com
首页 > 编程语言 > 详细

Dynamic Programming 类问题的空间优化方法 - 滚动数组

时间:2020-03-12 10:01:42      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:利用   优化方法   div   就是   斐波那契   lin   方法   特征   通过   

以斐波那契数列为例 来看一下 滚动数组 是如何节约空间的

传统方式:如果想求解fib(7) 需要8个数组空间

0 1 1 2 3 5 8

通过观察 我们可以发现 求解fib(n) 我们只关心fib(n-1)和fib(n-2) 对再之前的数据并不关心 也就是可以认为是无效数据 这种特征特别适用于动态规划类题目

而利用滚动数组 我们只需要3个数组空间

0 1 1 

 1 1 2 

       1 2 3 

          2 3 5 

             3 5 8

 传统方式:

    Fib[0] = 0;
    Fib[1] = 1;
    Fib[2] = 1;
    for(int i = 3; i <= n; ++i)
        Fib[i] = Fib[i - 1] + Fib[i - 2];
    return Fib[n];

 

 滚动数组:

    Fib[1] = 0; 
    Fib[2] = 1;
    for(int i = 2; i <= n; ++i)
    {
        Fib[0] = Fib[1]; 
        Fib[1] = Fib[2];
        Fib[2] = Fib[0] + Fib[1];
    }
    return Fib[2];

 

Dynamic Programming 类问题的空间优化方法 - 滚动数组

标签:利用   优化方法   div   就是   斐波那契   lin   方法   特征   通过   

原文地址:https://www.cnblogs.com/lnas01/p/12467090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!