递推求解专题练习

hdoj2044--一只小蜜蜂...

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

#include <stdio.h>

int main(void)
{
    int i, j, n;
    __int64 d[51] = {1, 1, 2,};

    for (i = 3; i < 51; i++)
        d[i] = d[i-1] + d[i-2];
    scanf("%d", &n);
    while (n-- && scanf("%d%d", &i, &j) != EOF)
        printf("%I64d\n", i > j ? 0 : d[j-i]);

    return 0;
}

 

hdoj2045--不容易系列之(3)—— LELE的RPG难题

Problem Description

人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:
有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.
以上就是著名的RPG难题.
如果你是Cole,我想你一定会想尽办法帮助LELE解决这个问题的;如果不是,看在众多漂亮的痛不欲生的Cole女的面子上,你也不会袖手旁观吧?

Input

输入数据包含多个测试实例,每个测试实例占一行,由一个整数N组成,(0<n<=50)。

Output

对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行。

Sample Input

1

2

Sample Output

3

6

#include<stdio.h>

int main()
{
    int i,n;
    double a[51]={0,3,6,6};
    while(scanf("%d",&n)!=EOF)
    {
        for(i=4;i<51;i++)
            a[i]=a[i-2]*2+a[i-1];
        printf("%.lf\n",a[n]);
    }
    return 0;
}

 

hdoj2046--骨牌铺方格

Problem Description

在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:

Input

输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n
(0<n<=50)。

Output

对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。

Sample Input

1

3

2

Sample Output

1

3

2

#include<stdio.h>

int main()
{
    int i,n;
    double a[51]={0,1,2,3};
    for(i=4;i<51;i++)
        a[i]=a[i-2]+a[i-1];
    while(scanf("%d",&n)!=EOF)
    {
        printf("%.lf\n",a[n]);
    }
    return 0;
}

 

hdoj2047--阿牛的EOF牛肉串

Problem Description

今年的ACM暑期集训队一共有18人,分为6支队伍。其中有一个叫做EOF的队伍,由04级的阿
牛、XC以及05级的COY组成。在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点什么来纪念这段激情燃烧的岁月,想了一想,阿牛从家里拿来了一
块上等的牛肉干,准备在上面刻下一个长度为n的只由"E" "O"
"F"三种字符组成的字符串(可以只有其中一种或两种字符,但绝对不能有其他字符),阿牛同时禁止在串中出现O相邻的情况,他认为,"OO"看起来就像发
怒的眼睛,效果不好。
你,NEW
ACMer,EOF的崇拜者,能帮阿牛算一下一共有多少种满足要求的不同的字符串吗?
PS: 阿牛还有一个小秘密,就是准备把这个刻有
EOF的牛肉干,作为神秘礼物献给杭电五十周年校庆,可以想象,当校长接过这块牛肉干的时候该有多高兴!这里,请允许我代表杭电的ACMer向阿牛表示感谢!
再次感谢!

Input

输入数据包含多个测试实例,每个测试实例占一行,由一个整数n组成,(0<n<40)。

Output

对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行。

Sample Input

1

2

Sample Output

3

8

#include<stdio.h>

int main()
{
    int i,n;
    __int64 a[41]={0,3,8};
    for(i=3;i<41;i++)
        a[i]=(a[i-2]+a[i-1])*2;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%I64d\n",a[n]);
    }
    return 0;
}

 

hdoj2048--神、上帝以及老天爷

Problem Description

HDU 2006'10 ACM contest的颁奖晚会隆重开始了!
为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体要求是这样的:
首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中;
然后,待所有字条加入完毕,每人从箱中取一个字条;
最后,如果取得的字条上写的就是自己的名字,那么“恭喜你,中奖了!”
大家可以想象一下当时的气氛之热烈,毕竟中奖者的奖品是大家梦寐以求的Twins签名照呀!不过,正如所有试图设计的喜剧往往以悲剧结尾,这次抽奖活动最后竟然没有一个人中奖!
我的神、上帝以及老天爷呀,怎么会这样呢?
不过,先不要激动,现在问题来了,你能计算一下发生这种情况的概率吗?

Input

输入数据的第一行是一个整数C,表示测试实例的个数,然后是C
行数据,每行包含一个整数n(1<n<=20),表示参加抽奖的人数。

Output

对于每个测试实例,请输出发生这种情况的百分比,每个实例的输出占一行,
结果保留两位小数(四舍五入),具体格式请参照sample output。

Sample Input

1

2

Sample Output

50.00%



错排:n封信放入n个信封,要求全部放错,共有多少种放法,记n个元素的错排总数为f(n)

假设有n封信,第一封信可放在(2-n)的任一个信封里,共n-1种放法,设第一封信放在了第k个信封里,若此时第k封信放在了第1个
信封里,则只要将剩下的n-2错排,即f(n-2),若第k封信没有放在了第1个信封里,可将第1封信的位置看成是“第k个位置”,即将n-1封信错排,
即为f(n-1)

由递推可得:f(n)=(n-1)*(f(n-1)+f(n-2))

#include<stdio.h>

int main()
{
    int C,n;
    int i;
    double a[21]={0,0,1};
    for(i=3; i<21; i++)
    {
        a[i]=(i-1)*(a[i-2]+a[i-1]);
    }
    while(scanf("%d",&C)!=EOF)
    {
        while(C--)
        {
            scanf("%d",&n);
            a[n]*=1.0;
            for(i=2; i<=n; i++)
                a[n]/=i;
            printf("%.2lf%%\n",a[n]*100);

        }
    }
    return 0;
}
时间: 2024-11-03 11:33:25

递推求解专题练习的相关文章

算法--递推策略

递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法.这种算法特点是:一个问题的求解需一系列 的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已 知条件,此种方法叫逆推.无论顺推还是逆推,其关键是要找到递推式.这种处理问题的方法能使复杂运算化为若干步重复的简单运算,充分发挥出计算机擅长于重 复处理的特点. 递推算法的首要问题是得到相邻的数据项间的关系(即递推

算法——递推算法

递推算法 给定一个数的序列H0,H1,-,Hn,-若存在整数n0,使当n>n0时,可以用等号(或大于号.小于号)将Hn与其前面的某些项Hi(0<i<n)联系起来,这样的式子就叫做递推关系. 递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法.  递推算法分为顺推和逆推两种. 相对于递归算法,递推算法免除了数据进出栈的过程,也就是说,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值.  比如阶乘函数:f(n)=n*f(n-1)  在f(3)

UVa 10049 Self-describing Sequence:自描述序列&amp;amp;二分递推

10049 - Self-describing Sequence Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=34&page=show_problem&problem=990 Solomon Golomb's self­describing sequence is the only non­decreasing

“大整数阶乘”问题的递推算法

/* 标题:<<系统设计师>>应试编程实例-[递推算法程序设计] 作者:成晓旭 时间:2002年09月11日(11:52:00-16:26:00) 实现递推算法的大整数阶乘处理函数 时间:2002年09月16日(18:38:00-20:02:00) 实现"斐波那契数列"问题的递推算法函数 */ //:============================"大整数阶乘"问题的递推算法=========================== #d

UVa 10519 !! Really Strange !! (递推)

10519 - !! Really Strange !! Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=115&page=show_problem&problem=1460 思路:注意到题目所说"Every two area have exactly two points to intersect and

c++问题-递推 数的划分问题一

问题描述 递推 数的划分问题一 把正整数N分解成M个正整数的和,即使M个数相同但顺序不同也认为是不同的方案,要求总方案数.如3=1+2跟3=2+1是两个不同的方案

POJ2229 递推

这题明显递推 但是找了好久才找出来 很明显的是n为奇数的时候 n=n-1的偶数答案一样 n为偶数的时候 答案为 上一个偶数是情况 +1 +1 还有n/2 的情况同一 *2 所以h[n]=h[n-2]+h[n/2] #include <iostream> #include<cstdio> #include<cstring> using namespace std; int d[1000005]; int main() { d[1]=1; d[2]=2; for(int i

互联网设计瀑布递推

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 递推流程有明显的阶段划分僵化劣势,优点缺点显而易见: 适合技术较弱或缺乏经验的设计团队. 适合容易理解但很复杂的产品,易于组织和管理. 适合稳定的产品定义和很容易被理解的设计解决方案. 适合对产品规模的升级和架构扩展,质量容易保证. 与软件工程思想并无二致,基于以上特点,递推流程尤其不适合互联网产品的创新设计.虽然经过江湖前辈的努力总结提炼,

2345智能浏览器推春运专题

春运大战已经正式打响,如我们所见很多浏览器也积极地推出了各种"抢票版",结果却被有关部门请去谈话,而有的浏览器却在用不同的方式帮助网友们顺利回家,比如2345智能浏览器. 我们知道浏览器的第一要务就是为网友提供信息,因此方便完善的春运信息才是浏览器服务用户的正途.为此2345智能浏览器专门推出了"2013春运·平平安安回家"特别专题,为用户提供最详尽的春运信息. 首先是2013春运实用查询,这里为网友们列出了最直观的车票查询工具,此外还有火车票余票.列车时刻表.高铁