dp专题14 爬楼梯(进阶)

这篇具有很好参考价值的文章主要介绍了dp专题14 爬楼梯(进阶)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本题链接:题目页面

题目:

输入
3 2
输出
3

dp专题14 爬楼梯(进阶),DP训练,算法笔记,算法

思路:

        这是个 完全背包 + 排列数选取方法的dp问题。需要注意的是初始化 0 和 1 都为 1.文章来源地址https://www.toymoban.com/news/detail-801401.html

代码详解如下:

#include <iostream>
#include <vector>
#define endl '\n'
#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(0)
using namespace std;

inline void solve()
{
        int n,m;
        cin >> n >> m;

        vector<int>dp(n + 1,0); // 定义 dp 数组

        // 初始化 dp ,  第 0 个台阶 和 第 1 个台阶 有 1 中方法
        dp[0] = 1;
        dp[1] = 1;

        // 假设  上 3 个台阶  ,   先 1 后 2  和 先 2 后 1 是两种不同的方法
        // 所以这是个排列数, 所以我们应该先遍历 背包,再遍历物品
        for(int i = 2;i <= n;++i)  // 这里 i 先从 2 开始 是因为我们前面初始化 过 0 和 1 了
        {
                for(int j = 1;j <= m;++j)       // 这里 j 从 1 开始 是没必要 选择 0 阶台阶的选法 
                {
                        if(i >= j) dp[i] += dp[i - j];
                }
        }

        cout << dp[n] << endl;
}

signed main()
{
        IOS;
        int t = 1;
        // cin >> t;    
        while(t--)
        {
                solve();
        }
        return 0;
}

最后提交:

到了这里,关于dp专题14 爬楼梯(进阶)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《算法竞赛进阶指南》0x51 线性DP

    题意: N N N 个人站成左端对齐的 k k k 排,每排有 N i N_i N i ​ 人, N i N j N_i N_j N i ​ N j ​ 如果 i j i j i j ,则 N i N j N_i N_j N i ​ N j ​ 。每一排从左到右身高递减,每一列从后到前身高递减。询问方案数。 解析: 按照身高从大到小的顺序决定位置。在任意时刻,已经确定位

    2023年04月23日
    浏览(41)
  • 算法竞赛备赛之动态规划训练提升,DP基础掌握

    01背包问题是在M件物品中选择若干件放在空间为W的背包中,每件物品的体积为W1,W2至Wn,价值为P1,P2至Pn,01背包的约束条件是给定几种物品,每种物品有且只有一个,并且有权值和体积两个属性。 01背包问题常常采用动态规划的方法去求解,状态转移方程为:F(W,i)=max{F(W,

    2024年02月08日
    浏览(41)
  • AcWing算法学习笔记:动态规划(背包 + 线性dp + 区间dp + 计数dp + 状态压缩dp + 树形dp + 记忆化搜索)

    算法 复杂度 时间复杂度0(nm) 空间复杂度0(nv) 代码 算法 通过滚动数组对01背包朴素版进行空间上的优化 f[i] 与 f[i - 1]轮流交替 若体积从小到大进行遍历,当更新f[i, j]时,f[i - 1, j - vi] 已经在更新f[i, j - vi]时被更新了 因此体积需要从大到小进行遍历,当更新f[i, j]时,f[i - 1,

    2024年02月21日
    浏览(42)
  • 算法基础复盘笔记Day11【动态规划】—— 区间DP、计数类DP、树形DP、记忆化搜索

    ❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于 Java后端开发 ,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得 关注 、 点赞 、 收藏 、 评论 ⭐️⭐️⭐️ 📣 您的支持将是我创作的动力,让我们一起加油进步吧!!!🎉🎉 1. 题目

    2024年02月01日
    浏览(41)
  • 动态规划(DP)(算法笔记)

    本文内容基于《算法笔记》和官方配套练题网站“晴问算法”,是我作为小白的学习记录,如有错误还请体谅,可以留下您的宝贵意见,不胜感激。 动态规划(Dynamic Programming,DP)是一种用来解决一类最优化问题的算法思想。简单来说,动态规划将一个复杂的问题分解成若干个子

    2024年02月05日
    浏览(44)
  • 算法训练Day45:70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

    Category Difficulty Likes Dislikes ContestSlug ProblemIndex Score algorithms Easy (54.04%) 2993 0 - - 0 Tags 记忆  |  数学  |  动态规划 Companies 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 示例 2: 提示: 1 = n = 45

    2024年02月01日
    浏览(41)
  • 算法训练第四十五天|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

    题目链接:70. 爬楼梯 (进阶) 参考:https://programmercarl.com/0070.%E7%88%AC%E6%A5%BC%E6%A2%AF%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E7%89%88%E6%9C%AC.html 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数

    2023年04月26日
    浏览(58)
  • 动态规划算法刷题笔记【状压dp】

    a1 == 1 判断是否为奇数,如果为1,则为奇数 因为奇数二进制末位一定是1,所以 与1 得到的结果是1 这里,114——2 14 ——第15位是1,可以表示14个1 i(1j)—— 从0开始是因为,原本第1位就是1。所以j=0时,对应的就是 i 的最低位 F l o y d Floyd Fl oy d 算法: n o w ∣ f l a g = = f l

    2024年02月11日
    浏览(41)
  • dp专题15 零钱兑换

    本题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台         这道题,是个比较模板的完全背包问题,这里要求的是问凑成总金额所需的最少的硬币的个数。 我们明确一下 dp[ i ] 的含义,是   dp[ i ] 存储的是凑成总金额所需的最少的硬币的个数。 其中 下标 i 的含

    2024年01月19日
    浏览(27)
  • 算法基础复盘笔记Day10【动态规划】—— 线性DP

    ❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于 Java后端开发 ,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得 关注 、 点赞 、 收藏 、 评论 ⭐️⭐️⭐️ 📣 您的支持将是我创作的动力,让我们一起加油进步吧!!!🎉🎉 1. 题目

    2023年04月21日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包