递归专练E 汉诺塔系列之青蛙过河
来源:互联网 发布:淘宝虚拟现实购物 编辑:程序博客网 时间:2024/05/26 08:42
Problem Description
1)一条小溪尺寸不大,青蛙可以从左岸跳到右岸,在左岸有一石柱L,石柱L面积只容得下一只青蛙落脚,同样右岸也有一石柱R,石柱R面积也只容得下一只青蛙落脚。 2)有一队青蛙从小到大编号:1,2,…,n。 3)初始时:青蛙只能趴在左岸的石头 L 上,按编号一个落一个,小的落在大的上面-----不允许大的在小的上面。 4)在小溪中有S个石柱、有y片荷叶。 5)规定:溪中的每个石柱上如果有多只青蛙也是大在下、小在上,每个荷叶只允许一只青蛙落脚。 6)对于右岸的石柱R,与左岸的石柱L一样允许多个青蛙落脚,但须一个落一个,小的在上,大的在下。 7)当青蛙从左岸的L上跳走后就不允许再跳回来;同样,从左岸L上跳至右岸R,或从溪中荷叶、溪中石柱跳至右岸R上的青蛙也不允许再离开。 问题:在已知小溪中有 s 根石柱和 y 片荷叶的情况下,最多能跳过多少只青蛙?
Input
输入数据有多组,每组占一行,每行包含2个数s(s是小溪中的石柱数目)、y(y是小溪中的荷叶数目)。(0 <= s <= 10,0 <= y <= 10),输入文件直到EOF为止!
Output
对每组输入,输出有一行,输出最多能跳过的青蛙数目。
Example Input
0 21 2
Example Output
36
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
推一下青蛙数量与石柱和荷叶之间的关系:
1.单独考虑荷叶(即s=0,y存在)
当有一片荷叶时:可以通过2只青蛙
当有两片荷叶时:可以通过3只青蛙
当有三片荷叶时:可以通过4只青蛙
当有y片荷叶时:可以通过y+1只青蛙
2.考虑有石柱的情况:
s=0,y时:可以过y+1只;
s=1,y时:先把y+1只青蛙借助荷叶转移到石柱上,再把y+1只青蛙借助荷叶转移到R石柱上,再把石柱上的y+1只青蛙借助荷叶转移到对岸,共转移2*(y+1)只青蛙
s=2,y时:先把y+1只青蛙借助荷叶转移到石柱1上,再把y+1只青蛙借助荷叶转移到石柱2上,再把石柱1上的青蛙借助荷叶转移到石柱2上(此时石柱2)上有2*(y+1)只,再把y+1只青蛙借助荷叶转移到石柱1上,再把y+1只青蛙转移到右岸上,再把池塘里的3*(n+1)转移到右岸上,共4*(n+1)
可以看作先把s=1时的2*(n+1)转移到石柱,再把2*(n+1)转移到对岸,再把石柱上转移到对岸。
s=3,y时,先4*(n+1)到石柱,再4*(n+1)到对岸,再把石柱上转移到对岸共8*(n+1)
.....
每一个都是前一个s的两倍
number(s,y)=2*number(s-1,y);
#include <stdio.h>int number(int a,int b){ if(a==0)//因为s=0时,数目已知所以当作递归结束条件(两个未知数) return b; else return number(a-1,b)*2;//每一个都是前一个两倍,直到a==0}int main(){ int s,y; while(scanf("%d%d",&s,&y)!=EOF) { printf("%d\n",number(s,y+1)); } return 0;}
阅读全文
0 0
- 递归专练E 汉诺塔系列之青蛙过河
- 递归递推之 青蛙过河
- 递归&s3479青蛙过河
- 递归专练D 汉诺塔系列(规律+递归)
- 递归与递推 - 青蛙过河
- 递推递归练习 N 青蛙过河
- 递推递归练习N青蛙过河
- 递推递归练习--N(青蛙过河)
- 青蛙过河
- 青蛙过河
- 青蛙过河
- 青蛙过河
- 青蛙过河
- 青蛙过河
- 青蛙过河
- 青蛙过河
- 青蛙过河
- 青蛙过河
- 基于Microsoft Visual Studio 2008 的delta3d安装
- php脚本高级分离术
- Cas之5.2.x版本单点登录自定义REST认证-yellowcong
- Sourcetree 使用笔记
- Ubuntu16.04安装maven3.5.2
- 递归专练E 汉诺塔系列之青蛙过河
- Spring中PropertyPlaceholderConfigurer的用法
- 六行代码安装 GPU版本的TensorFlow
- 高度注意 Map 类集合 K/V 能不能存储 null 值的情况
- 在阿里云ECS服务器上搭建tomcat
- php laraval框架 generate 生成key
- C++ auto和decltype浅析
- 使用JavaScript实现UTF-8编解码
- [HDU] 1754