爬楼梯【动态规划】 计蒜客
假设你现在正在爬楼梯,楼梯有 n 级。每次你只能爬 1 级或者 2 级,那么你有多少种方法爬到楼梯的顶部?
输入格式
第一行输入一个整数 n(1≤n≤50) n(1\leq n \leq 50) n(1≤n≤50),代表楼梯的级数。
输出格式
输出爬到楼梯顶部的方法总数。
样例输入
5
样例输出
8
分析:分析:假设从底走到第n级的走法有dp[n]种,走到第n级有两个方法,
一个是从(n-1)级走一步,另一个是从第(n-2)级走两步,
前者有dp[n-1]种方法,后者有dp[n-2]种方法,
所以有dp[n] = dp[n-1] + dp[n-2],还有dp[0]=0,dp[1]=1,dp[2]=2。
#include<iostream>
using namespace std;
int dp[100];
int calStepDP(int n)
{
//动态规划
dp[0]=0;
dp[1]=1;
dp[2]=2;
int i;
for(i=3;i<=n;i++){
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
}
int main(int arhc,char **argv){
int n;
scanf("%d",&n);
int ans;
ans=calStepDP(n);
printf("%d\n",ans);
return 0;
}
浙公网安备 33010602011771号