题目:
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
输入
多组测试样例。每组测试样例包含一个整数n。(1<=n<=100)
输出
每组测试样例输出一行,表示青蛙跳上n级台阶的跳法数量.
所得到的结果模1000000007
样例输入 Copy
3
4
样例输出 Copy
3
5
解析:
简单的动态规划,dp[i]表示到第i个台阶有多少种跳法,跳上第i个台阶无非有两种情况,第一种是从i-1跳一级上来。第二种是从i-2跳两级上来。求算dp[i]只需把dp[i-1]和dp[i-2]加起来就行了。
代码:
#include<iostream>
using namespace std;
#define int long long
const int P = 1000000007;
int dp[110];
signed main()
{
dp[1] = 1;dp[2] = 2;
for(int i=3;i<=100;i++)
dp[i] = (dp[i-1]+dp[i-2])%P;
int x;
while(cin>>x)
cout<<dp[x]<<'\n';
}