杭电OJ_(2044)一只小蜜蜂..

来源:互联网 发布:s7200模拟量编程实例 编辑:程序博客网 时间:2024/05/16 18:19
Problem Description
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。

 

Input
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
 

Output
对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
 

Sample Input
21 23 6
 

Sample Output
1

3

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044

这个题目看了多遍自己动手画还是一脸蒙,后来看了一下指导,才知道怎么回事,首先分析一下这个图形顺序以蛇的形,分为两行,题目中右侧相邻的蜂房,不能反向爬

的意思是可以1->2,1->3,2->3,但是不能3->2,3->1这种方式,由图可以看出,1->2,3->4,5->6等是一回事1->4,3->6等是一回事。

自己可以推几个出来1->2 1部

1->3 2步

1->4 3步

1->5 5步

1->6 8步 等等这个时候已经能看出了,这是一个简单的递推关系

**还有一个点需要注意到啊ab的范围是0-50很大的区间的,int位数不够,需要用到long long int

代码

#include<stdio.h>int main(){__int64 ad[60];//把每一个距离的用递存放在数组中int i,j,k,a,b,n;scanf("%d",&n);ad[1]=1;ad[2]=2;for(i=3;i<=50;i++){ad[i]=ad[i-2]+ad[i-1];}while(n--){scanf("%d %d",&a,&b);//根据ab输入的距离找对应数组里的值输出即可printf("%I64d\n",ad[b-a]);}return 0;}

原创粉丝点击