当前位置: 首页 > article >正文

动态规划刷题

文章目录

  • 动态规划
    • 三步问题
    • 题目解析
    • 代码

动态规划

1. 状态表示:dp[i],表示dp表中i下标位置的值
2. 状态转移方程:以i位置位置的状态,最近的一步来划分问题,比如可以将状态拆分成前状态来表示现状态,dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
3. 初始化
4. 填表顺序
5. 返回值
线性dp的状态表示dp[i]都是以某个位置为开头或者以某个位置为结尾

三步问题

在这里插入图片描述

题目解析

1. 状态表示:以i为结尾,dp[i]是什么意思,是一共有多少种方法
2. 状态转移方程:以i位置最近的一步来划分问题
3. 初始化:dp[1] = 1,dp[2] = 2,dp[3] = 4
4. 填表顺序:从左向右填表
5. 返回值:返回dp[n]的状态

在这里插入图片描述

代码

class Solution 
{
public:
    int waysToStep(int n) 
    {
        if(n == 1 || n == 2) return n;
        else if(n == 3) return 4;
        
        long long k = 1e9 + 7;

        vector<int> dp(n+1);
        dp[1] = 1,dp[2] = 2,dp[3] = 4;
        for(int i = 4;i <= n;i++)
        {
            dp[i] = (((dp[i-1] + dp[i-2]) % k) + dp[i-3]) % k;
        } 

        return dp[n];
    }
};

http://www.kler.cn/a/568670.html

相关文章:

  • 计算机网络---SYN Blood(洪泛攻击)
  • 【计算机网络基础】-------计算机网络概念
  • ​Java 开发中的String判断空及在多种转换String字符串场景下的判断空
  • Rust学习总结之-枚举
  • Linux--基本指令2
  • 嵌入式开发工程师笔试面试指南-数电基础
  • Vue框架的使用 搭建打包 Vue的安全问题(Xss,源码泄露)
  • postgresql源码学习(60)—— VFD的作用及机制
  • 蓝桥杯备考:DFS之记忆化搜索
  • Spring单例模式 Spring 中的单例 饿汉式加载 懒汉式加载
  • SyntaxError: positional argument follows keyword argument
  • 使用【华为手机】给吉利车机升级安装第三方软件教程【保姆级教程】
  • Nacos 配置共享文件 如何在Nacos配置共享文件
  • 如何编写一个基本的 Makefile
  • 【Docker】使用Docker搭建-MySQL数据库服务
  • 基于PythonPython面向复杂场景的高质量图像合成方法研究
  • 【数据结构】LRUCache|并查集
  • 钉钉小程序(企业内部应用)开发下载预览文件
  • Nginx负载均衡策略详解:从轮询到智能分发,打造高可用服务架构
  • 专题一四数之和