题目:
给定整数n,代表台阶数,一次可以跨2个或者1个台阶,求共多少种走法。
//解决DP,主要是找到状态转移方程
//动态规划法通常基于一个递推公式和几个初始状态求解,
//当前子问题的解由上一次子问题的解推出
#include<iostream>
#define MAX 1000
using namespace std;
int main(){
int n,dp[MAX];
cin>>n;
dp[1]=1;dp[2]=2;
for(int i=3;i<=n;i++){
dp[i]=dp[i-1]+dp[i-2];
}
cout<<dp[n];
return 0;
}
该程序使用动态规划方法解决经典的台阶问题,即一次可以跨1个或2个台阶,求解达到n个台阶的不同走法数量。初始状态为dp[1]=1,dp[2]=2,之后的状态dp[i]由dp[i-1]和dp[i-2]的和得出。
3713

被折叠的 条评论
为什么被折叠?



