您的位置:首页 > 其它

hdoj 2044 一只小蜜蜂... 解题报告 (简单递推)

2011-01-25 21:22 405 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2044

Problem Description
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,
Input
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
Output
对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
解题思路:
     1.理解题意,发现这题虽然是中文的但是题意很难懂。可以简单理解成将数字排列起来,如从3到6,则应该有
      346,356,3456三种走法。再如2走到6,一定会经过4或者5,有23456,2346,2356,2456
      246五种情况,注意到了没,如果b是6,则路径一定会经过4和5;                             
     2令n=大数-小数,a(1)=1,a(2)=2;第n个数a(n)有两种情况:
                    1)先走到n-1,有a(n-1)种情况,再走单独一步到n,只有一种选择;
                    2)先走到n-2,有a(n-2)种情况,再向右走一步(也就是跨了两步),一也只有一种选择。
                     所以推出f(n)=f(n-1)+f(n-2);
#include <stdio.h>
int main()
{
int n,t1,t2,i,j;
__int64 a[60];
scanf("%d",&n);
{
for(i=1;i<=n;i++)
{
scanf("%d%d",&t1,&t2);
a[1]=1;
a[2]=2;
for(j=3;j<=t2-t1;j++)
a[j]=a[j-1]+a[j-2];
printf("%I64d/n",a[t2-t1]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: