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 相关文章推荐
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
使用jquery获取网页中图片高度的两种方法
Sep 26 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
jQuery中nextAll()方法用法实例
Jan 07 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
Mar 26 Javascript
详解AngularJS Filter(过滤器)用法
Dec 28 Javascript
JavaScript中的Object对象学习教程
May 20 Javascript
angularjs实现多张图片上传并预览功能
Feb 24 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
微信小程序 行的删除和增加操作实现详解
Sep 29 Javascript
微信小程序request请求封装,验签代码实例
Dec 04 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 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
php桌面中心(二) 数据库写入
2007/03/11 PHP
PHP基础知识介绍
2013/09/17 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
javascript Array.remove() 数组删除
2009/08/06 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
python select.select模块通信全过程解析
2017/09/20 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
Python语言异常处理测试过程解析
2020/01/08 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
企业诚信承诺书
2014/05/23 职场文书
介绍长城的导游词
2015/01/30 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
导游词之西递宏村
2019/12/10 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python