动态规划算法

动态规划解法:

1.确定dp数组以及下标含义

2.确定递推公式

3.dp数组如何初始化

4.如何遍历数组

5.举例推导

例如下面一到简单题

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n) 。 

递归解法 

int fib(int N) {
    if(N<=1)return N;
       return fib(N-1)+fib(N-2);
}

这道斐波那契数列,很多同学直接一手递归就解决,但是递归的时间复杂度O(2^n)明显要高,但是我们今天重点是动态规划 

int fib(int N) {
        if (N <= 1) return N;
        vector<int> dp(N + 1);
        dp[0] = 0;
        dp[1] = 1;
        for (int i = 2; i <= N; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[N];
    }

可以看到动态规划的时间复杂度是O(N),比递归好了不少,虽然空间复杂度是O(N),但是实际只需要两个变量存放前面的两个值,所以空间复杂度还可以优化到O(1)

int fib(int N) {
        if (N <= 1) return N;
        int dp[2];
        dp[0] = 0;
        dp[1] = 1;
        for (int i = 2; i <= N; i++) {
            int sum = dp[0] + dp[1];
            dp[0] = dp[1];
            dp[1] = sum;
        }
        return dp[1];

相关推荐

  1. 动态规划算法介绍

    2024-06-11 00:26:01       68 阅读
  2. 算法动态规划

    2024-06-11 00:26:01       41 阅读
  3. 算法动态规划引入

    2024-06-11 00:26:01       40 阅读
  4. 算法——C/动态规划

    2024-06-11 00:26:01       30 阅读
  5. 动态规划-算法

    2024-06-11 00:26:01       17 阅读
  6. 算法动态规划

    2024-06-11 00:26:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-11 00:26:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-11 00:26:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-11 00:26:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-11 00:26:01       20 阅读

热门阅读

  1. 分享: 动图网站

    2024-06-11 00:26:01       10 阅读
  2. 本地部署 RAGFlow

    2024-06-11 00:26:01       10 阅读
  3. RGMII接口--->(013)FPGA实现RGMII接口(十三)

    2024-06-11 00:26:01       8 阅读
  4. 开机自启动脚本配置

    2024-06-11 00:26:01       8 阅读
  5. 本地化平台部署运维事项

    2024-06-11 00:26:01       11 阅读
  6. 软件安全技术【太原理工大学】

    2024-06-11 00:26:01       8 阅读
  7. 数据结构——第8章 排序

    2024-06-11 00:26:01       11 阅读
  8. React的生命周期总结

    2024-06-11 00:26:01       10 阅读
  9. 02--SpringBoot自动装配原理

    2024-06-11 00:26:01       10 阅读
  10. c 语言 ---- 结构体

    2024-06-11 00:26:01       7 阅读