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 相关文章推荐
javascritp实现input输入框相关限制用法
Jun 29 Javascript
JavaScript中DOM详解
Apr 13 Javascript
Jquery promise实现一张一张加载图片
Nov 13 Javascript
Ubuntu系统下Angularjs开发环境安装
Sep 01 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
JS按钮闪烁功能的实现代码
Jul 21 Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
关于Webpack dev server热加载失败的解决方法
Feb 22 Javascript
原生实现一个react-redux的代码示例
Jun 08 Javascript
JavaScript使用面向对象实现的拖拽功能详解
Jun 12 Javascript
JS面向对象编程实现的Tab选项卡案例详解
Mar 03 Javascript
vue自定义树状结构图的实现方法
Oct 18 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文件上传表单摘自drupal的代码
2011/02/15 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
python中requests和https使用简单示例
2018/01/18 Python
python对象与json相互转换的方法
2019/05/07 Python
python实现共轭梯度法
2019/07/03 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
2015年班级元旦晚会活动总结
2014/11/28 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
门卫管理制度范本
2015/08/05 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server