问题 J: algorithm-跳台阶
题目描述简单的dp问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
输入
多组测试样例。每组测试样例包含一个整数n。(1<=n<=100)
输出
每组测试样例输出一行,表示青蛙跳上n级台阶的跳法数量.
所得到的结果模1000000007
样例输入
3
4
样例输出
3
5
C++
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll M = 1000000007;
const int N = 110;
int n;
ll f[N];
int main(){
while(cin>>n){
f[1]=1;
f[2]=2;
for(int i=3;i<=n;i++){
f[i] = (f[i-1]%M+f[i-2]%M)%M;
}
cout<<f[n]%M<<endl;
}
}
该博客介绍了如何使用动态规划方法解决一个经典的算法问题——青蛙跳台阶。青蛙每次可以跳1级或2级台阶,求解跳上n级台阶的所有可能跳法。程序以C++实现,通过维护一个数组f来存储前i级台阶的跳法,并利用前两项之和求得当前项,最终输出结果并模1000000007以防止溢出。

被折叠的 条评论
为什么被折叠?



