内存:128  时间:1

题目描述

超哥每天都要上楼回宿舍,但是超哥每次上楼都给自己定一个跳楼所用的次数,超哥想知道他上n层楼跳m次有多少种可能。已知超哥腿长,一次能从1楼跳到3楼,也可以从1楼跳到2楼。(类似徒步爬楼 (童年趣事)问题,不过超哥厉害,一跳最少上一楼)。

输入

多组测试数据  

每行输入两个整数n,m(1<=n<=40,1<=m<=20) 分别代表楼有n层,超哥能跳m

输出

每行输出一个结果

样例输入

1 1
3 2

样例输出

1
2

提示

while(cin>>)

代码如下

#include<iostream>
using namespace std;
int f(int n,int m)
{
	if(m==1)
	{
		if(n==1||n==2)
		return 1;
		else
		return 0;
	}
	if(n==0&&m==0)
		return 1;
	return f(n-1,m-1)+f(n-2,m-1);
}
int main()
{
	int n,m;
	while(cin>>n>>m)
	{
		cout<<f(n,m)<<endl;
	}
	return 0;
}

代码来源于互联网,仅供参考!