超级楼梯之归纳解法
来源:互联网 发布:net多用户商城源码 编辑:程序博客网 时间:2024/04/28 03:53
题目:超级楼梯
Problem Description
有一楼梯共M级,刚开始时你在第一级,若每次最多只能跨N级,要走上第M级,共有多少种走法?
Input
输入数据首先包含一个整数T(T<=100),表示测试实例的个数,然后是T行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数,还有N值(1<=N<=4)。
Output
对于每个测试实例,请输出不同走法的数量
Sample Input
3
Sample Output
3
#include<cmath>
using namespace std;
int main()
{int T,a[101][3],t=1;
cin>>T;
if(T<=0)
return 1;
while(t<=T)//大于了T次读取之后标志着整个输入的结束,T<=100,M<=40,N<=4
{
cin>>a[t][1]>>a[t][2];
if(a[t][1]<=0||a[t][2]<=0)
return 1;
t++;
}
int f[41];
int kk[101];
for(t=1;t<=T;t++)
{
int m=a[t][1],n=a[t][2];//m级阶梯,一次性最多跨n步
for(int i=1;i<=n;i++)
f[i]=pow(2,i-1); //A(1)=1,A(2)=2,…,A(N)=2^(N-1) 当1≤K≤N时
for(i=n+1;i<=m;i++)
{
f[i]=0;
for(int j=1;j<=n;j++)
f[i]+=f[i-j];//A(K)=A(K-1)+A(K-2)+…+A(K-N) 当N<K时
}
kk[t]=f[m];
cout<<kk[t]<<endl;
}
return 0;
}
Problem Description
有一楼梯共M级,刚开始时你在第一级,若每次最多只能跨N级,要走上第M级,共有多少种走法?
Input
输入数据首先包含一个整数T(T<=100),表示测试实例的个数,然后是T行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数,还有N值(1<=N<=4)。
Output
对于每个测试实例,请输出不同走法的数量
Sample Input
3
3 2
4 2
4 3Sample Output
3
5
7
归纳法:
设刚好爬到K(1≤K≤M)阶梯有A(K)种不同爬法,按条件不难得出:A(1)=1,A(2)=2,…,A(N)=2^(N-1) 当1≤K≤N时A(K)=A(K-1)+A(K-2)+…+A(K-N) 当N<K时通过上式不断迭代求出需要的A(M)C++实现代码如下:#include<iostream>
#include<cmath>
using namespace std;
int main()
{int T,a[101][3],t=1;
cin>>T;
if(T<=0)
return 1;
while(t<=T)//大于了T次读取之后标志着整个输入的结束,T<=100,M<=40,N<=4
{
cin>>a[t][1]>>a[t][2];
if(a[t][1]<=0||a[t][2]<=0)
return 1;
t++;
}
int f[41];
int kk[101];
for(t=1;t<=T;t++)
{
int m=a[t][1],n=a[t][2];//m级阶梯,一次性最多跨n步
for(int i=1;i<=n;i++)
f[i]=pow(2,i-1); //A(1)=1,A(2)=2,…,A(N)=2^(N-1) 当1≤K≤N时
for(i=n+1;i<=m;i++)
{
f[i]=0;
for(int j=1;j<=n;j++)
f[i]+=f[i-j];//A(K)=A(K-1)+A(K-2)+…+A(K-N) 当N<K时
}
kk[t]=f[m];
cout<<kk[t]<<endl;
}
return 0;
}
0 0
- 超级楼梯之归纳解法
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 超级楼梯
- 实战Memcached缓存系统(6)Memcached CAS的多线程程序实例
- 为自己记------Android Camera 使用小结
- 实战Memcached缓存系统(7)Memcached的一些基础FAQ
- Spring MVC和Struts2的比较
- 国内向openstack提交review请求失败解决方法
- 超级楼梯之归纳解法
- GRE写作必备句型
- C语言学习笔记:15_c语言中的进制操作.c
- 【LeetCode】Power of Two
- How do I reset a jquery-chosen select option with jQuery?重置chosen组件值状态
- linux解压war包的命令
- HDU 1429 胜利大逃亡(续)(bfs)
- 实战Memcached缓存系统(8)Memcached异步实时读写问题的解决方案SAC
- 阅读代码建议