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 相关文章推荐
一行代码实现纯数据json对象的深度克隆实现思路
Jan 09 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 Javascript
jquery的选择器的使用技巧之如何选择input框
Sep 22 Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
js判断日期时间有效性的方法
Oct 24 Javascript
老生常谈JQuery data方法的使用
Sep 09 Javascript
jQuery事件绑定方法学习总结(推荐)
Nov 21 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
May 08 Javascript
React Native悬浮按钮组件的示例代码
Apr 05 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
js+canvas绘制图形验证码
Sep 21 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
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
php工具型代码之印章抠图
2018/07/18 PHP
js中prototype用法详细介绍
2013/11/14 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
npm的lock机制解析
2019/06/20 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
利用Python获取操作系统信息实例
2016/09/02 Python
Python学生信息管理系统修改版
2018/03/13 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
自荐信结尾
2013/10/27 职场文书
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
销售总监岗位职责
2014/01/04 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
2014年技术员工作总结
2014/11/18 职场文书
老干部座谈会主持词
2015/07/03 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers