汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
来源:互联网 发布:万网域名备案要多久 编辑:程序博客网 时间:2024/04/27 21:01
import java.math.BigInteger;/* * 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上(可以借助第三根柱子做缓冲)。 并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 如图【1.jpg】是现代“山寨”版的该玩具。64个圆盘太多了,所以减为7个, 金刚石和黄金都以木头代替了......但道理是相同的。 据说完成大梵天的命令需要太多的移动次数,以至被认为完成之时就是世界末日! 你的任务是精确计算出到底需要移动多少次。 很明显,如果只有2个圆盘,需要移动3次。 圆盘数为3,则需要移动7次。 那么64个呢? 答案写在“解答.txt”中,不要写在这里! */class Demo07_hanoi {public static void hanoi(int n,char a,char b,char c){if(n>0){hanoi(n-1,a,c,b);//System.out.println(a+"->"+b);hanoi(n-1,c,b,a);s++;}}static long s = 0;public static void main(String[] args){int n = 10;System.out.println("圆盘个数\t移动次数");for(int i=1;i<=n;i++){s = 0;hanoi(i,'a','b','c');System.out.println(i+" ->\t"+s);}System.out.println("由上结果可找到规律为:\n移动次数 = 2的n次方-1(n为圆盘个数)");System.out.println("64个圆盘的移动次数为:");BigInteger bi = new BigInteger("2");bi = bi.pow(64).subtract(BigInteger.ONE);System.out.println(bi);}}
运行结果:
圆盘个数移动次数1 ->12 ->33 ->74 ->155 ->316 ->637 ->1278 ->2559 ->51110 ->1023由上结果可找到规律为:移动次数 = 2的n次方-1(n为圆盘个数)64个圆盘的移动次数为:18446744073709551615
- 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
- MAXTNT,一个古老的传说
- 这是一个很古老的传说......
- 夜色徽州:一个古老的传说
- 算法之路(四)----汉诺塔(又称河内之塔)
- 古老印度的故事
- 古老的印度祝福语
- 汉诺塔(河内塔)
- 印度的不良贷款问题是全亚洲最差
- 汉诺塔(河内塔)问题
- 汉诺塔(河内之塔)
- 河内之塔(汉诺塔)
- 一个古老的言语
- 算法——汉诺塔(河内塔)
- 河内之塔(汉诺塔) java实现
- 汉诺塔问题(河内之塔)
- 汉诺塔(河内塔)算法与心得
- 汉诺塔||河内之塔
- #1045 - Access denied for user 'root'@'localhost' (using password: NO)解决办法
- oracle数据库exp,imp命令
- UNP总结 Chapter 26~29 线程、IP选项、原始套接字、数据链路访问
- 动态显示论坛评论、
- PGF and TIkz里面自定义函数的例子
- 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
- HTTP协议通信过程汇总
- css兼容overflow为hidden值
- 最高效的无限分类
- 关于EditText文本输入框输入类型的限制
- 查看表空间的名称及大小、查看表空间物理文件的名称及大小
- SQL----类似Split函数的实现1
- lazarus1.1:ListView用法
- ubuntu mac freetds unixodbc