欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 关于动态规划

关于动态规划

2025/4/17 6:19:40 来源:https://blog.csdn.net/2301_79894300/article/details/147024523  浏览:    关键词:关于动态规划

题例:

问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

一、三大步骤

第一步骤:定义数组元素的含义

定义dp[i]是什么意思(所求什么就定义什么)

题例:跳上i级的台阶总共有dp[i]种跳法,要求n级即要求dp[n]

第二步骤:找出数组元素之间的关系式

求数组元素之间的关系式

例题:dp[n]=dp[n-1]+dp[n-2](可能从前一个一阶跳上来或者是两阶跳上来的方法叠加)

第三步骤:找出初始值

注意数组不允许下标位负数

例题:因为dp[2]=dp[1]+dp[0],所以需要给出dp[1]和dp[0]

dp[1]=1,dp[0]=0

第四步骤:再次检查

观察我们知道dp[2]=2,但是dp[2]=dp[1]+dp[0]=0,所以不能从2开始要从3开始

代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;int dp[1000];dp[0]=0,dp[1]=1,dp[2]=2;for(int i=3;i<=n;i++){dp[i]=dp[i-2]+dp[i-1];}cout<<dp[n];return 0;
}

本文参考:告别动态规划,连刷40道动规算法题,我总结了动规的套路-CSDN博客

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词