爬楼梯的时候一次只能迈1级或2级台阶,假如一共有n级台阶的话,一共有多少种方法能够爬到楼梯顶部?
动态规划思路:假设到达第i级楼梯共有result[i]种方法,实际上到达第i级楼梯只能由第i-1级和第i-2级到达,即result[i] = result[i-1] + result[i-2]。
#include <bits/stdc++.h>
using namespace std;
int result[100] = {0};
int solve(int n)
{
int res;
if(result[n] > 0) return result[n];
if(n==0) res=1;
else if(n==1) res=1;
else if(n==2) res=2;
else res = solve(n-1)+solve(n-2);
result[n] = res;
return res;
}
int main()
{
int i;
int n;
scanf("%d",&n);
printf("%d\n",solve(n));
return 0;
}
From 计蒜客