汉诺塔游戏规律,让汉诺塔沦为体力劳动!(后附汉诺塔解法Python源码)
来源:互联网 发布:数据库证书有哪些 编辑:程序博客网 时间:2024/05/29 07:49
记住这个规律,以后玩汉诺塔基本上就是体力劳动了。
规律:
先小后大,单左双右,循环。
设3个柱子分别是甲,乙,丙,把3根柱子看成一个循环,也就是说,甲的右边是乙,乙的右边是丙,而丙的右边则回到甲,同理,甲的左边就是丙。简单点,记住丙的右边是甲,和甲的左边是丙就行了。
盘子分别是盘1,盘2,盘3,盘4……盘1最小。
按照“单左双右”的规律,先移动小的,也就是先移动盘1,再移动盘2,盘3,按顺序,把能移动的都移动一次,每次移动一步,如果不符合游戏规则,就移动两步,还是不符合的话,就找到盘1,重新按照“单左双右”的规则走,直到完成游戏。
例:3个盘子,单数,向左走。
1,盘1向左移动一步,到丙柱。
2,盘2向左移动一步,不符合游戏规则,移动两步,到乙柱。
3,盘3向左移动一步,不符合游戏规则,移动两步,不符合游戏规则。找到最小的盘1,向左移动一步,移动到乙柱。
4,盘2被盘1压住,无法移动。盘3向左移动一步,到丙柱。
5,找到最小的盘1,向左移动一步,到甲柱。
6,盘2向左移动一步,不符合游戏规则,移动两步,到丙柱。
7,盘3被盘2压住,无法移动。找到最小的盘1,向左移动一步,到丙柱。
游戏完成。
原文链接:http://blog.sina.com.cn/s/blog_68507b0a0100onrr.html
附:n层汉诺塔解法的Python源码
def move(n, a, b, c): if n ==1: print(a, '-->', c) return move(n-1, a, c, b) print(a, '-->', c) move(n-1, b, a, c)move(5, 'A', 'B', 'C')
1 0
- 汉诺塔游戏规律,让汉诺塔沦为体力劳动!(后附汉诺塔解法Python源码)
- 体力劳动
- 体力劳动
- HDOJ 1997 汉诺塔VII (递归模拟 or 规律解法)
- 如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx
- 如何利用Python和win32编程避免重复性体力劳动(三)——文本框操作:WM_GETTEXT 和WM_SETTEXT
- 如何利用Python和win32编程避免重复性体力劳动(四)——下拉列表操作:CB_SETCURSEL、CBN_SELENDOK和CBN_SELCHANGE
- 如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx
- 如何利用Python和win32编程避免重复性体力劳动(三)——文本框操作:WM_GETTEXT 和WM_SETTEXT
- 如何利用Python和win32编程避免重复性体力劳动(四)——下拉列表操作:CB_SETCURSEL、CBN_SELENDOK和CBN_SELCHANGE
- 汉若塔游戏非递归解法(c#)
- 九宫格数独游戏解法(一)
- 飛飛(六十四)洗牌游戏解法一
- 飛飛(六十五)洗牌游戏解法二
- 大学生的“有机”生活:寝室沦为PC游戏“包厢”
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- 体力劳动?脑力劳动?
- 使用.pro自己控制编译
- 阿里开放平台获取refresh_token
- Struts2 result type 配置
- Genymotion在win10下不能启动的解决方案
- 浅谈ElasticSearch的嵌套存储模型
- 汉诺塔游戏规律,让汉诺塔沦为体力劳动!(后附汉诺塔解法Python源码)
- tomcat学习笔记之catalina.sh
- yii2.0 利用Excel类做导入导出
- LeetCode OJ 105. Construct Binary Tree from Preorder and Inorder Traversal
- 浅谈浏览器内核
- C#读取Excel文件
- vaadin功能特性
- opencv 灰度图
- 抓包工具Charles 注册码/破解方法