洛谷P1244青蛙过河

题目描述
有一条河,左边一个石墩(A 区)上有编号为 1,2,…,n 的 n 只青蛙,河中有 k 个荷叶(C 区),还有 h 个石墩(D 区),右边有一个石墩(B 区),n 只青蛙要过河(从左岸石墩 A 到右岸石墩 B),规则为:

1.石墩上可以承受任意多只青蛙,荷叶只能承受一只青蛙(不论大小);
2.青蛙可以:A→B(表示可以从 A 跳到 B,下同),A→C,A→D,C→B,D→B,D→C,C→D;
3.当一个石墩上有多只青蛙时,则上面的青蛙只能跳到比它大一号的青蛙上面。
你的任务是对于给出的 h,k,计算并输出最多能有多少只青蛙可以根据以上规则顺利过河。

输入格式
输入两个整数 h,k。

输出格式
一个整数,表示最多能有多少只青蛙可以根据以上规则顺利过河。

思路

在过河规则中,要求保证D区石墩上的青蛙编号大的在下面,小的在上面,审题时不要忽略A区和B区也是石墩,同样需要满足这个条件,即A区编号为1到n的n个青蛙从小到大堆好,利用h个石墩和k片荷叶,使这n只青蛙依然按照这个排列顺序挪到B区上,注意青蛙不能两只叠在一起跳。
p[h][k]表示h个石墩k片荷叶最多能跳过去多少只青蛙。
首先考虑h=0时的情况,我们肯定会让第1到k只青蛙,各跳到一片荷叶上,然后让第k+1只青蛙从A→B,然后依次让荷叶上的青蛙按顺序跳到B区
因此p[0][k]=k+1;
当h=1时,我们肯定希望一部分的青蛙能去D区的那一个石墩上,即编号1到k+1的青蛙跳到了D区的石墩上,跳法同h=0时的情况;另一部分青蛙能借助k片荷叶跳到B区,即编号k+2到2*k+2的青蛙跳到B区然后D区的那个石墩上的青蛙再跳到B区,跳法同h=0时的情况
因此p[1][k]=p[0][k]+p[0][k];
当h=2时,我们会希望有一部分青蛙跳借助D区的第一个石墩跳到B区,一部分借助D区的第二个石墩跳到B区
因此p[2][k]=p[1][k]*2;

得到递推关系式为:
p[i][k]=p[i-1][k]2;
k在本题中是常量
简化:p[i]=2
p[i-1],p[0]=k+1;

思路很清晰了,这里就直接贴上代码了

代码

#include<iostream>using namespace std;int h,k,p[25];int main()
{cin>>h>>k;p[0]=k+1;for(int i=1;i<=h;i++)p[i]=2*p[i-1];cout<<p[h]<<endl;return 0;
}

洛谷P1244青蛙过河相关推荐

  1. 洛谷P1244 青蛙过河 DP/思路

    又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...

  2. 洛谷P1244青蛙过河题解

    我用的是C++来解 其实这道题很简单,只要弄清楚关系就行,和汉诺塔问题相似.不用细想顺序(青蛙就是乱跳),可将青蛙作为一个整体来想. 我们用f[h][k]表示h个石墩和k片荷叶最多的青蛙数 f[0][ ...

  3. P1244 青蛙过河

    P1244 青蛙过河 题目描述 有一条河,左边一个石墩(A区)上有编号为1,2,3,4,-,n的n只青蛙,河中有k个荷叶(C区),还有h个石墩(D区),右边有一个石墩(B区),如下图所示.n只青蛙要过 ...

  4. 数论:扩展欧几里德(洛谷P1516 青蛙的约会)

    欧几里德 基本思想:gcd(q,r)=gcd(r,q%r); 证明,设q.r的最大公因数为a,则q=xa,r=ya,xy互质 不妨设x>y(显然如果小于会在一次gcd运算后交换) 则q%r=(x ...

  5. 【洛谷】P1052 过河(状压dp)

    题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...

  6. 题解【洛谷】P1002 过河卒

    题目描述 点击进入题目 棋盘上 A 点有一个过河卒,需要走到目标 B 点.卒行走的规则:可以向下.或者向右.同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因 ...

  7. 洛谷 P1516 青蛙的约会

    https://www.luogu.org/problemnew/show/P1516#sub 题意还是非常好理解的..... 假如这不是一道环形的跑道而是一条直线,你会怎样做呢? 如果是我就会列一个 ...

  8. java青蛙过河打字_趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

  9. java 独木桥_趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

最新文章

  1. 扔掉Swagger,试试这款功能强大,零注解侵入的API接口文档生成工具!
  2. 实用的项目管理系统,才能让协同工作更顺畅
  3. 英语关于计算机的作文600字,有关电脑的作文600字
  4. 前端学习(3048):vue+element今日头条管理-展示文章列表
  5. 【渝粤教育】国家开放大学2018年秋季 3722-22T燃气输配工程 参考试题
  6. python之虚拟聊天室服务器详解
  7. 多功能AD杀手AD7124 效果理想 原理图经验分享+实物图
  8. Java后台获取Cookie
  9. PyQt学习随笔:重写组件的event方法捕获组件的事件
  10. linux 安装minio并设置开机自启动
  11. Linux系统centos下如何通过命令查看CPU内存存储等硬件信息?
  12. 【Android Tricks 6】ViewPager首页与尾页的滑动动作响应
  13. 【经典推荐】10部关于数学的顶级纪录片
  14. 【Python】基于机器学习的财务数据分析——识别财务造假
  15. 计算机大一萌新,要补充哪些计算机基本知识
  16. python测试框架untest_python自动化测试框架unittest
  17. 世界上只有三种人:程序猿人和男人女人
  18. 天刀论剑显示服务器,天刀S2论剑 各段位奖励称号外观及属性一览
  19. WIN10系统内存占用80%以上的解决方案,导致电脑一卡一卡的
  20. Python怎么学?自学可以学好吗?

热门文章

  1. javascript--浅谈函数与闭包
  2. c语言数组读心术,超准,一棵树的读心术
  3. Nachos 3.4入门的两个问题
  4. 自己私藏的一篇:和现在做网络营销、咨询公司业务有关 和技术无关 和CRM有点关系 可能给网络社区和网络营销从业者有启发
  5. redis内存消耗详解
  6. Ubuntu 16.04 安装搜狗输入法(打中文)
  7. Spring基础(持续更新)
  8. 七大设计原则(一):开闭原则
  9. js实现图片上一张下一张点击
  10. Echarts通用饼图、柱状图、折线图封装