js实现杯子倒水问题自动求解程序


Posted in Javascript onMarch 25, 2013

智力测试题经常遇到类似的逻辑题,给几个容量不等的杯子,让你倒出多少的水。

安卓上有一款专门玩这个题的游戏叫做Water Logic.

js实现杯子倒水问题自动求解程序

我安装这个游戏把几十个关卡通了一遍,感觉这个游戏的关卡设计很不好,关卡的难度并不是递增的,有很多后面的关卡相当的弱智,并且缺乏高难度的关卡。

做为程序员的我们,玩这类题目应该都没问题,10步以内的都可以轻松搞定,10步以上的也可以搞定但未必能够轻松达到最少步数。

有3颗星强迫症的玩家兼程序员,写出这么个自动求解的小程序,以后这个问题再也不是问题了。

js实现杯子倒水问题自动求解程序

点击这里试试杯子倒水问题自动求解吧

算法基本逻辑

每个杯子有倒满、倒空、倒入其它杯子的操作,所以总共是: 杯子数*(杯子数-1+2)

对于3只杯子的情况,每一步可选的操作有12种.  如果2个杯子则每步可选操作有6种。

遍历每一种操作,记录操作完成后各个杯子内的水量,以水量计算出一个key来建立map.

遍历各种倒水操作的过程中,如果key已经存在且当前步数大于先前记录的步数则舍弃该操作。

这个小程序只能解决2个杯子或3个杯子的倒水问题,并没有写成N个杯子通用的,代码有很多hard code。

Javascript 相关文章推荐
url地址自动加#号问题说明
Aug 21 Javascript
初识Node.js
Sep 03 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
Oct 15 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
Dec 08 Javascript
jQuery实现背景弹性滚动的导航效果
Jun 01 Javascript
详解使用React全家桶搭建一个后台管理系统
Nov 04 Javascript
Node.js使用Express.Router的方法
Nov 14 Javascript
js实现3D粒子酷炫动态旋转特效
Sep 13 Javascript
关于Js中new操作符的作用详解
Feb 21 Javascript
Javascript之datagrid查询详解
Sep 15 Javascript
Three.js实现雪糕地球的使用示例详解
Jul 07 Javascript
js实现上传图片之上传前预览图片
Mar 25 #Javascript
使用jQuery validate 验证注册表单实例演示
Mar 25 #Javascript
多个表单中如何获得这个文件上传的网址实现js代码
Mar 25 #Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
Mar 25 #Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 #Javascript
js 字符串转换成数字的三种方法
Mar 23 #Javascript
jquery多选项卡效果实例代码(附效果图)
Mar 23 #Javascript
You might like
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
PHP5.6读写excel表格文件操作示例
2019/02/26 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
Js面试算法详解
2018/04/08 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
python获得文件创建时间和修改时间的方法
2015/06/30 Python
详解python3实现的web端json通信协议
2016/12/29 Python
python使用super()出现错误解决办法
2017/08/14 Python
Python实现抢购IPhone手机
2018/02/07 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
Python类的继承用法示例
2019/01/31 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
python画微信表情符的实例代码
2019/10/09 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
超市业务员岗位职责
2013/12/05 职场文书
大学生党课思想汇报
2013/12/29 职场文书
运动会稿件300字
2014/02/14 职场文书
青奥会口号
2014/06/12 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书