【动态规划】将已解决子问题的答案保存下来,不用重复计算,避免大量计算,提高效率
N阶楼梯上楼问题
描述
N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)
输入描述:
输入包括一个整数N,(1<=N<90)。
输出描述:
可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数。
示例1
输入:
4
输出:
5
#include<bits/stdc++.h>
using namespace std;
//动态规划
const int MAXN=91;
long long dp[MAXN];
int main(){
int n;
dp[0]=0;
dp[1]=1;
for(int i=2;i<MAXN;i++){
dp[i]=dp[i-1]+dp[i-2];
}
while(cin>>n){
cout<<dp[n+1]<<endl;
}
return 0;
}