【递归与递推】青蛙过河
题目描述
(1)石墩上可以承受任意多只青蛙,荷叶只能承受一只青蛙(不论大小);
(2)青蛙可以:A→B(表示可以从A跳到B,下同),A→C,A→D,C→B,D→B,D→C,C→D;
(3)当一个石墩上有多只青蛙时,则上面的青蛙只能跳到比它大1号的青蛙上面。
你的任务是对于给出的h,k,计算并输出最多能有多少只青蛙可以根据以上规则顺利过河?
输入
输出
样例输入
2 3
样例输出
16
思路:递推(dp)
首先,青蛙只能往前跳,不能往后跳,而且只能12345这样排下去,所以要想使最多的青蛙到达对岸,只需使编号最大的青蛙首先跳到对岸(否则编号更大的青蛙就跳不过去了)。
然后,要想使编号最大的青蛙首先跳到对岸,只需让河面上承载最多的青蛙。而荷叶上只能承载一只青蛙,所以需要让青蛙尽可能多地叠到石墩上。
接下来便是核心内容:(f[i]表示当有k个荷叶,i个石墩时过河青蛙的最大数量)
1、若有k个荷叶,没有石墩,则最多有k+1个青蛙。所以f[0]=k+1(不需要解释了吧);
2、若有k个荷叶,1个石墩,则只需要使石墩上承载最多的青蛙。进一步分析,我们只需要将石墩当做对岸,这样就变成1的情况了。所以f[1]=f[0]+k+1;
3、若有k个荷叶,2个石墩,则需要先让石墩1作为对岸,叠完后再让石墩2作为对岸。所以f[2]=f[1]+f[0]+k+1;
继续往下推理,得到状态转移方程:f[h]=f[0]+f[1]+f[2]+……+f[h-1]+k+1;
代码:
1 #include <iostream> 2 #include <bits/stdc++.h> 3 using namespace std; 4 int n,m,sum; 5 int a[10000]; 6 int main() 7 { 8 scanf("%d%d",&n,&m); 9 a[0]=m+1; 10 sum=a[0]; 11 for(int i=1;i<=n;i++) 12 { 13 a[i]=sum; 14 sum+=a[i]; 15 } 16 cout << sum << endl; 17 return 0; 18 }
View Code
转载于:https://www.cnblogs.com/SoulSecret/p/8447457.html
【递归与递推】青蛙过河相关推荐
- 贪心、递归、递推以及动态规划算法的分析与对比
PS: 头一次规规矩矩的按照论文的格式写文章,呵呵.虽然是小儿科的不能再小儿科的东西了..不过..也忽悠了6000多字~~嘿嘿..肯定写的不好,第一次嘛..所以..接受大家一切批评哈!...文章N ...
- 递归与递推 普通排队问题及带约束条件的排队问题 c代码
先看下题目: 电影院买票排队,票价50,排队的人中携带50元的有20个人,携带100的有10个人,售票处开始时没有余额, 问最多有多少种排队方式使得售票处能够找的开(携带相同数额的人交换位置算一种排队 ...
- 2.3 基本算法之递归变递推 1188 菲波那契数列(2) python
http://noi.openjudge.cn/ch0203/1760/ """2.3 基本算法之递归变递推 1188 菲波那契数列(2)--3分 http://ybt. ...
- 2.3基本算法之递归变递推 1188 菲波那契数列(2)
http://noi.openjudge.cn/ch0203/1760/ /* 2.3基本算法之递归变递推 1188 菲波那契数列(2) http://ybt.ssoier.cn:8088/probl ...
- 2.3 基本算法之递归变递推 放苹果 python
http://noi.openjudge.cn/ch0203/666/ """ 2.3 基本算法之递归变递推 666 放苹果 http://noi.openjudge.c ...
- 2.3基本算法之递归变递推_3525上台阶
http://ybt.ssoier.cn:8088/problem_show.php?pid=1190 /* 2.3基本算法之递归变递推_3525上台阶 http://noi.openjudge.cn ...
- 2.3基本算法之递归变递推_3525上台阶 python
http://ybt.ssoier.cn:8088/problem_show.php?pid=1190 """ 2.3基本算法之递归变递推_3525上台阶 http:// ...
- 递归,递推,记忆化搜索,空间优化(数字三角形)
题目链接:http://poj.org/problem?id=1163 1.递归思想:第一层到最底层的最优路径可以分解为:第一层到第二层来,再加上第二层的最优路径 状态: Time Limit Exc ...
- c语言中用递推法解决渔夫问题,递归、递推 - IT小冰的个人空间 - OSCHINA - 中文开源技术交流社区...
递归 定义 :定义一个函数时出现调用本函数的成分,称之为递归 直接递归,自己调自己 间接递归,函数p调函数q,q又调用p 尾递归,递归函数中,递归调用语句是最后一句 递归应满足的条件 : 需要解决的问 ...
- PHP 递归和递推思想
递归思想(递归函数): 递归思想的一个基本形式是在一个函数中,有至少一条语句,又会去调用该函数自身.(求n!问题用递归:杨辉三角问题用过递归-) <?phpfuntion digui($n){i ...
最新文章
- IDEA配置NodeJS项目遇到问题及解决
- 积木赛尔号机器人_《赛尔号大电影7》2019年暑期重磅回归 继《熊出没》之后再掀国产动画浪潮...
- C语言 某班级有30名学生,要求从键盘输入每个学生的数学课程成绩(百分制),并进行以下处理
- 更方便地模拟 Http 响应
- 华为云占用443端口_关于XAMPP默认端口80和443被占用的问题
- js设计模式——8.中介者模式
- 两种方式设置单元格的下划线
- win7 与xp 互联步骤
- webSphere 配置
- 使用计算机过程中 你有哪些有效措施防范计算机病毒,计算机病毒防范措施主要有什么...
- Python实现数列求和
- Solidity简单例子-代理投票
- 前端架构师的YY定义
- MOBA类和“吃鸡”游戏为什么对网络延迟要求高?
- 液晶显示器汉字字模存储及显示
- 【C++】算法STL库
- 内核I2C子系统详解
- mysql运动会报名系统_运动会报名系统的简易实现
- Error:1045, Access denied for user 'root'@'localhost' (using password: YES) (Phon3.6+Mysql8.1 )
- C++ 堆区,栈区,数据段,bss段,代码区(详解)
热门文章
- Jackson高级操作————流式API与JsonGenerator、JsonParser
- 彭山计算机培训,彭山2021年初中生学计算机
- 药学专业报计算机一级有用吗,全网友泣泪劝阻!高考结束之后,什么专业千万不能报?...
- 西电计算机学院导师苗启广,Xidian Media Lab
- cp命令显示进度条_干货|| Linux常用命令大全
- c语言将字符串按空格分割_字符串单词输入反向输出怎么搞?C语言又带着二维数组来了!...
- android无法自动旋屏,Android 手动设置屏幕方向后不能自动转屏问题
- linux启动管理,Linux启动管理 详述
- C语言数据类型转换详解
- python里面的函数