• HDU 2044 一只小蜜蜂


    一只小蜜蜂...

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

    Total Submission(s): 29985    Accepted Submission(s): 11066

    Problem Description
    有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。 其中,蜂房的结构如下所示。
     
    Input
    输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
     
    Output
    对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
     
    Sample Input
    2
    1 2
    3 6
     
    Sample Output
    1
    3
     
    Author
    lcy
     
    Source
     

     早起一水。。。

    设从a走到b有f(b,a)种,有简单的递推关系f(b,a)=f(b-1,a)+f(b-2,a),

    初始条件为f(a+1,a)=1,f(a+2,a)=2

    注意这个其实是斐波纳契,所以要用long long还有记忆化

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 
     7 long long dp[100][100];
     8 
     9 long long f(int b,int a)
    10 {
    11     if(dp[b][a])
    12         return dp[b][a];
    13     if(b==a+1)
    14         return dp[b][a]=1;
    15     if(b==a+2)
    16         return dp[b][a]=2;
    17     return dp[b][a]=f(b-1,a)+f(b-2,a);
    18 }
    19 
    20 int main()
    21 {
    22     int kase,a,b;
    23 
    24     scanf("%d",&kase);
    25 
    26     while(kase--)
    27     {
    28         for(int i=0;i<100;i++)
    29             fill(dp[i],dp[i]+100,0);
    30         scanf("%d %d",&a,&b);
    31         cout<<f(b,a)<<endl;
    32     }
    33 
    34     return 0;
    35 }
    [C++]
  • 相关阅读:
    [POI2011]Lightning Conductor
    [NOI2009]诗人小G

    公告&留言板
    联合省选 2020 题解
    年末时的一些思维碎屑
    RE:ゼロから始める AFO 生活
    退役前的做题记录6.0
    2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解
    300iq Contest 1 简要题解
  • 原文地址:https://www.cnblogs.com/lzj-0218/p/3247277.html
Copyright © 2020-2023  润新知