PHP实现的解汉诺塔问题算法示例

 更新时间:2018年08月06日 11:49:41   作者:qw_xingzhe  
这篇文章主要介绍了PHP实现的解汉诺塔问题算法,简单描述了汉诺塔问题及相应的实现算法,并结合实例形式给出了PHP具体操作技巧,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

本文实例讲述了PHP实现的解汉诺塔问题算法。分享给大家供大家参考,具体如下:

问题描述:

相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

解决思路:

(1)以C盘为中介,从A杆将1至n-1号盘移至B杆;
(2)将A杆中剩下的第n号盘移至C杆;
(3)以A杆为中介;从B杆将1至n-1号盘移至C杆。

PHP代码实现:

/**
 * 汉诺塔(3根柱子)
 * @param unknown $n
 * @param string $a        // 当前位置
 * @param string $b        // 中转位置
 * @param string $c        // 目标位置
 */
function hanoi($n,$a='A',$b='B',$c='C'){
  if( $n==1 ){
    echo "{$a}->{$c} <br/>";
  }else{
    hanoi($n-1,$a,$c,$b);    // 将最大盘上的盘子,借助C柱,全部移动到B柱上
    echo "{$a}->{$c} <br/>";  // 将最大盘直接从A柱移到C柱
    hanoi($n-1,$b,$a,$c);    // 再将B柱上的盘子,借助A柱,全部移到C柱
  }
}
//测试:
hanoi(3,$a='A',$b='B',$c='C')

运行结果:

A->C
A->B
C->B
A->C
B->A
B->C
A->C

思考:假如是4根柱子的汉诺塔,怎么移动效率最高?

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP常用函数和常见疑难问题解答

    PHP常用函数和常见疑难问题解答

    虽然PHP在整体功能上不如Java强大,但相比PHP而言Java算是较重量级的,所以在小中型系统的开发上,使用PHP的趋势不可挡,就算是大型网站,比如淘宝也部分使用了PHP(Java后台逻辑+PHP前台展示),所以赶紧开始学PHP啦
    2014-03-03
  • Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解

    Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解

    这篇文章主要介绍了Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解,需要的朋友可以参考下
    2020-04-04
  • PHP设计模式之模板模式定义与用法详解

    PHP设计模式之模板模式定义与用法详解

    这篇文章主要介绍了PHP设计模式之模板模式定义与用法,较为详细的说明了模板模式的原理、功能、应用及php定义、使用模板模式的相关操作技巧,代码简单易懂,需要的朋友可以参考下
    2018-12-12
  • php使用递归函数实现数字累加的方法

    php使用递归函数实现数字累加的方法

    这篇文章主要介绍了php使用递归函数实现数字累加的方法,涉及php递归操作的技巧,需要的朋友可以参考下
    2015-03-03
  • php 设计模式之 工厂模式

    php 设计模式之 工厂模式

    用工厂模式设计数据库操作类,本程序要运行在PHP5.0以上,使用本程序可以方便的更换数据库,并且可扩展到其它数据库平台;在换数据库平台时,只是简单的修改数据库类型就可以了。
    2008-12-12
  • PHP iconv 函数转gb2312的bug解决方法

    PHP iconv 函数转gb2312的bug解决方法

    之前写过一篇解决xajax库中文乱码的问题,说到可以用 iconv( "UTF-8", "gb2312" , $FormValues['a']) 来转换,最近发现更好的写法应该是。
    2009-10-10
  • PHP 开发环境配置(Zend Studio)

    PHP 开发环境配置(Zend Studio)

    运行Zend Studio安装文件(ZendStudio-7.1.2.exe) 安装选项请按照图片中我的选择。
    2010-04-04
  • 解析php类的注册与自动加载

    解析php类的注册与自动加载

    本篇文章是对php类的注册与自动加载进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • PHP实现的MD5结合RSA签名算法实例

    PHP实现的MD5结合RSA签名算法实例

    这篇文章主要介绍了PHP实现的MD5结合RSA签名算法,结合实例形式分析了php使用md5结合RSA实现的签名算法相关操作技巧,并附带了RSA公钥与私钥的相关说明,需要的朋友可以参考下
    2017-10-10
  • PHP 一个随机字符串生成代码

    PHP 一个随机字符串生成代码

    此函数可创建一个随机字符串,作为用户的随机密码等。
    2010-05-05

最新评论

?


http://www.vxiaotou.com