题目描述
超哥每天都要上楼回宿舍,但是超哥每次上楼都给自己定一个跳楼所用的次数,超哥想知道他上n层楼跳m次有多少种可能。已知超哥腿长,一次能从1楼跳到3楼,也可以从1楼跳到2楼。(类似徒步爬楼 (童年趣事)问题,不过超哥厉害,一跳最少上一楼)。
输入
多组测试数据
每行输入两个整数n,m(1<=n<=40,1<=m<=20) 分别代表楼有n层,超哥能跳m次
输出
每行输出一个结果
样例输入
1 1
3 2
样例输出
1
2
参考代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int f(int,int);
int i,j;
while(scanf("%d%d",&i,&j)!=EOF)
{
printf("%dn",f(i,j));
}
return 0;
}
int f(int x,int y)
{
if(y>x||y*2<x)
return 0;
else if(x==y)
return 1;
else
return f(x-1,y-1)+f(x-2,y-1);
}
解析
暂无