问题 I: 不一样的走楼梯
2017-12-28 19:43
190 查看
题目描述
有一个楼梯共M级,刚开始你在第零级,若你每次可以跨小于等于M的任意级(也就是说,你可以跨1级,2级....M级),那么要走上第M级,共有多少种走法呢?结果可能有点大,输出对1000000009取余后的结果~
输入
多组输入,以文件尾结束
每行一个数M代表想要跳上第M级(0<M<=10000)
输出
每行一个数,代表跳上M级有多少种方法
样例输入
样例输出
思路:
直接暴力打表即可。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int dp[10005];
int main()
{
int m;
memset(dp,0,sizeof(dp));
dp[0]=1;dp[1]=1;dp[2]=2;
for(int i=3;i<=10000;i++)
{
for(int j=1;j<=i;j++)
{
dp[i]=(dp[i]+dp[i-j])%1000000009;
}
}
while(~scanf("%d",&m))
{
cout<<dp[m]<<endl;
}
return 0;
}
有一个楼梯共M级,刚开始你在第零级,若你每次可以跨小于等于M的任意级(也就是说,你可以跨1级,2级....M级),那么要走上第M级,共有多少种走法呢?结果可能有点大,输出对1000000009取余后的结果~
输入
多组输入,以文件尾结束
每行一个数M代表想要跳上第M级(0<M<=10000)
输出
每行一个数,代表跳上M级有多少种方法
样例输入
1
样例输出
1
思路:
直接暴力打表即可。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int dp[10005];
int main()
{
int m;
memset(dp,0,sizeof(dp));
dp[0]=1;dp[1]=1;dp[2]=2;
for(int i=3;i<=10000;i++)
{
for(int j=1;j<=i;j++)
{
dp[i]=(dp[i]+dp[i-j])%1000000009;
}
}
while(~scanf("%d",&m))
{
cout<<dp[m]<<endl;
}
return 0;
}
相关文章推荐
- 问题 I: 不一样的走楼梯
- 问题 I: 不一样的走楼梯
- 问题 I: 不一样的走楼梯(简单dp)
- 问题 K: 超级楼梯(JSU-ZJJ)
- Python走楼梯问题解决方法示例
- Climbing Stairs 爬楼梯问题,每次可以走1或2步,爬上n层楼梯总方法 (变相fibonacci)
- MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程
- 解决问题最重要的习惯不是一直盯着屏幕和编写修改代码,某些时候,阻止你成功的东西恰恰会是过于努力。这时候你需要暂停一下,平缓你的思绪,换一种方法或许能带给你不一样的效果。
- Win32 程序 控件风格和预览不一样的问题
- 楼梯上楼问题
- 上楼梯问题
- 1205_N阶楼梯上楼问题
- 上楼梯---动态规划问题
- Homebrew 解决CUDA 与 OpenCV的 C++不一样的问题
- 编程练习:赛车跑圈(走楼梯)问题
- 问题五十七: 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编程序计算共有多少种不同的走法?
- 诡异的Linux磁盘空间被占用问题,根目录满了,df和du占用不一样【转】
- HDU1548(楼梯问题bfs)
- 备战考研算法笔记(八)N阶楼梯上楼问题
- 爬楼梯问题