华中科技大学机试 N阶楼梯上楼问题 Easy *DP和非递归打表问题
基本思想:
只需要缕清关系即可;
对于第i个楼梯,可以得知有两种情况:
1.i-1 和 i两部跨;
2.i一步跨;
所以有:
dp[i]=dp[i-1]+dp[i-2];
dp初始化的时候直接初始化dp[0],dp[1]即可;
关键点:
无;
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
const int maxn = 100;
int n;
int dp[maxn];
int main() {
while (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] << endl;
}
}

浙公网安备 33010602011771号