python实现:无刻度的一大一小水罐取水问题
问题描述:You have two jugs: a A-gallon jug and a B-gallon jug ( A > B ). Neither of the jugs have markings on them. There is a pump that can be used to fill the jugs with water. How can you get exactly C gallons of water in the A-gallon jug? Suppose the B <= C <= A and they are integer.
算法实现:
def jar(large_size, small_size, want, jar_large=0, jar_small=0, round=1):"""large_size: 大罐的容积small_size: 小罐的容积want: 希望最终取到的水的体积jar_large: 此时大罐中的水的体积jar_small: 此时小罐中的水的体积round: 进行了多少轮取水"""print('round:%s' % round)# 若大罐尺寸和小罐头线性相关,# 除非want和他们俩也线性相关,# 否则不可能完成if large_size % small_size == 0 and \large % want != 0 and \small_size != 1:return False# 如果want是小罐容量的倍数,# 且小于大罐容量,则进行want/small_size次就可以完成if want % 3 == 0 and want < large_size:return want, 0# 基本情况(base case)if jar_large == want:return jar_large, jar_smallelif jar_small == want:jar_large = jar_smalljar_small = 0return jar_large, jar_small# 正常递归程序(normal process)# 如果大罐为空,将大罐灌满elif jar_large == 0:jar_display(large_size, jar_small)return jar(large_size, small_size, want,large_size, jar_small, round+1)# 如果大罐中的水大于小罐的最大容量# 用大罐将小罐灌满,然后将小罐倒空elif jar_large > small_size:jar_display(jar_large-small_size+jar_small, 0)return jar(large_size, small_size, want,jar_large-small_size+jar_small, 0, round+1)# 否则,大罐中的水少于小罐容量,# 将大罐中的水倒入小罐else:jar_display(0, jar_large)return jar(large_size, small_size, want,0, jar_large, round+1)def jar_display(jar_large, jar_small):print('------------------')print('large:%s\nsmall:%s' % (jar_large, jar_small))print('------------------')
程序测试代码:
def main():large_size = 10small_size = 3for i in range(1, large_size+1):jarLarge, jarSmall = jar(large_size, small_size, i)print('finished:\nlarge:%s\nsmall:%s' % (jarLarge, jarSmall))main()
python实现:无刻度的一大一小水罐取水问题相关推荐
- 第7章第24节:双图排版:两张图片的一大一小对比排版 [PowerPoint精美幻灯片实战教程]
当版面中的两张图片,具有不同的重要性时,可以考虑将比较重要的图片放大显示,使版面产生鲜明的对比效果.首先将这张图片移到幻灯片的左上角. 由于这张图片比较能够展现幻灯片的主题,所以需要着重显示.因此在此 ...
- python 在无网络环境下安装包
python 在无网络环境下安装包 1 找到python包路径 C:\Users\admin\AppData\Local\Programs\Python\Python36-32\Lib\site-pa ...
- mfc怎么改按钮的按下状态_【荐读】马桶上一大一小的按钮该怎么按?原来这些年都错了...
马桶水箱上有两个冲水钮,一半大一半小,你知道它们有什么作用吗?日常使用马桶时两个冲水按钮,要怎么按才正确?今天终于有答案了..... 两按钮的作用 水箱一大一小的按钮,分别代表着满水和半水排水的功能. ...
- 电源滤波为何通常是一大一小两个电容并联?
在大部分的电源滤波电路中,滤波电容通常是一大一小两个不同容值的电容并联组成,那么原因在哪里呢?能否用一个电容代替呢?下面我们就来简单探讨一下这些问题. 在解决上面的问题之前,我们必须要了解一下电容的高 ...
- python操作无界面的chrome浏览器(转)
python操作无界面的chrome浏览器 python 操作无界面chrome浏览器 python操作无界面的chrome浏览器.主要利用selenium 和对应自己电脑上Chrome浏览器版本的w ...
- 高频滤波电路(电源那里的一大一小两个电容)
通信原理实验虽然结束有些天了,但是通信原理实验指导书上的滤波电路(如图1所示)一直在纠结着自己.改滤波电路跟自己之前见过的不大一样,两个滤波电容的容值是相等的,而这个电路的两个滤波电容的容值是不相等的 ...
- 诺基亚 android 7.0,在中国首发! 诺基亚两款Android 7.0新机曝光:一大一小
对于老粉丝来说,等来诺基亚安卓手机应该不会是太遥远的事情了,不过只是贴牌生产的它,真的还有入手的必要吗?现在,最新的消息称,诺基亚准备的两款安卓手机预计最快年底前发布,其完全由富士康设计和生产,定位高 ...
- VRAR领军Google发布一大一小Pixel_VRAR123
原文链接:VRAR领军Google发布一大一小Pixel_VRAR123 两部新机均採用最新的 Qualcomm Snapdragon 821 四核心处理器,亦会预载了最新的作业系统 Android ...
- 语音处理:Python实现dBFS刻度和采样值相互转换
语音处理:Python实现dBFS刻度和采样值相互转换 问题背景 功能思路 Python源码 相关资料 问题背景 项目在处理不同位深的音频信号时,时常需要涉及到样点值和dB对数域切换,不想反复去分析公 ...
- python画图横轴刻度间隔设置为3个月_Python 天气情况数据分析及可视化
Python 天气情况数据分析及可视化 环境配置 Pycharm开发环境 python 版本 python3.7 Anconda 集成开发环境 第三方库导入 ## pip install 模块 清华大 ...
最新文章
- 测试进口原装磁屏蔽电感 10MH的漏感以及在再生高频放大检波电路中的应用
- CountDownLatch 的使用小例
- 为什么我们做分布式要用 Redis ?
- 百度搜索,你画了好大一张饼,你还打算欺骗多少人呢?有图为证
- lncrna研究,2021最新相关资料合集
- mega x_[MEGA DEAL] 2020年完整的Java Master Class Bundle(96%)
- Python的特殊成员
- spring-data-JPA使用JpaRepository注解自定义SQL查询数据库多表查询
- BZOJ 4810 [Ynoi2017]由乃的玉米田(莫队+bitset)
- 如何理解许多Android布局
- 直接拿来用!Google 新推 AI 模型打破了现有 CNN 技术壁垒
- 前端设计必备-Font awesome 插件使用菜鸟言语
- MaxScale Binlog Server实践
- 上计算机课玩游戏检讨400字,上网课玩游戏检讨书
- 微积分 --- 以e为底的指数函数(个人学习笔记)
- 回归模型中截距项的意义_计量经济学第12讲(时间序列计量经济学模型:协整与误差修正模型)...
- 计算机右键 管理,鼠标右键菜单管理方法?
- 常用APP签名存档以及获取签名的几种方式介绍
- c#制作仿win7屏幕键盘之笔记
- lc用U盘更新固件_索尼电视安卓8.0固件升级完后电视连不上WIFI?最新解决方法!...
热门文章
- MySQL登录时出现的Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES) 的解决办法
- #最短路径,最小生成树#CH 6202 黑暗城堡
- Csico IPPS 测试程序 autodialer.jsp
- c语言char10是什么意思,c语言char是什么意思
- 北大计算机系女神每天必看必学的IT公众号
- item_half - 淘宝每日半价接口
- 外链对网站的作用(2022网站还有必要做外链吗)
- 《算法艺术与信息学竞赛》之 递推 例一 月亮之眼 vijos 1540
- python3爬虫有道翻译_【Python3爬虫】有道翻译
- xp系统如何启用服务器服务,xp系统怎么样启用远程服务器