本文给出了一个用PHP实现的求解汉诺塔问题的算法实例。分享给大家参考,如下:
问题描述:
相传,古印度的寺庙里有一种叫河内的游戏。在这个游戏中,有三个极点(不。A、B、C)放在一个铜板器件上,64块金板从下到上依次放在A极上(如下图)。游戏目标:将A杆上的所有金盘移到C杆上,保持原来的顺序折叠。操作规则:一次只能移动一块板,移动过程中大板始终在底部,小板在顶部,操作过程中板可以放在A、B、C杆中的任意一个杆上。
解决方案:
(1)以c盘为中介,将1号到n-1号盘从a杆移到b杆;(2)将A杆中剩余的第N块板移到C杆;(3)以A-bar为中介;将1号至n-1号圆盘从B杆移至C杆。
PHP代码的实现:
/* * *河内塔(3根柱子)* @ param unknown $ n * @ param string $ a//当前位置* @param string $b //中转位置* @param string $c //目标位置*/函数Hanoi ($ n,$ a=' a ',$ b=' b) }else{ hanoi($n-1,$ a,$c,$ b);//借助C柱回音壁' { a $ }-{ $ C } br/'将最大板块上的所有板块移到B柱;//将最大板直接从A列移到C列河内(n-1,b,A,C);//借助a柱将B柱上的所有板移到C柱上。//测试:河内(3,$a='A ',$b='B ',$c='C ')运行结果:
阿-钙-BC-BA-CB-AB-钙-碳
思考:如果是4柱河内塔,怎么才能移动效率最高?
更多对PHP相关内容感兴趣的读者可以查看本网站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》、《PHP数学运算技巧总结》、0103010
希望本文对PHP编程有所帮助。