PHP實(shí)現(xiàn)的解漢諾塔問(wèn)題算法示例
本文實(shí)例講述了PHP實(shí)現(xiàn)的解漢諾塔問(wèn)題算法。分享給大家供大家參考,具體如下:
問(wèn)題描述:
相傳在古印度圣廟中,有一種被稱為漢諾塔(Hanoi)的游戲。該游戲是在一塊銅板裝置上,有三根桿(編號(hào)A、B、C),在A桿自下而上、由大到小按順序放置64個(gè)金盤(如下圖)。游戲的目標(biāo):把A桿上的金盤全部移到C桿上,并仍保持原有順序疊好。操作規(guī)則:每次只能移動(dòng)一個(gè)盤子,并且在移動(dòng)過(guò)程中三根桿上都始終保持大盤在下,小盤在上,操作過(guò)程中盤子可以置于A、B、C任一桿上。
解決思路:
(1)以C盤為中介,從A桿將1至n-1號(hào)盤移至B桿;
(2)將A桿中剩下的第n號(hào)盤移至C桿;
(3)以A桿為中介;從B桿將1至n-1號(hào)盤移至C桿。
PHP代碼實(shí)現(xiàn):
/** * 漢諾塔(3根柱子) * @param unknown $n * @param string $a // 當(dāng)前位置 * @param string $b // 中轉(zhuǎn)位置 * @param string $c // 目標(biāo)位置 */ function hanoi($n,$a='A',$b='B',$c='C'){ if( $n==1 ){ echo "{$a}->{$c} <br/>"; }else{ hanoi($n-1,$a,$c,$b); // 將最大盤上的盤子,借助C柱,全部移動(dòng)到B柱上 echo "{$a}->{$c} <br/>"; // 將最大盤直接從A柱移到C柱 hanoi($n-1,$b,$a,$c); // 再將B柱上的盤子,借助A柱,全部移到C柱 } } //測(cè)試: hanoi(3,$a='A',$b='B',$c='C')
運(yùn)行結(jié)果:
A->C
A->B
C->B
A->C
B->A
B->C
A->C
思考:假如是4根柱子的漢諾塔,怎么移動(dòng)效率最高?
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP寫楊輝三角實(shí)例代碼
- 深入理解PHP幾個(gè)算法:PHP冒泡、PHP二分法、PHP求素?cái)?shù)、PHP乘法表
- PHP求最大子序列和的算法實(shí)現(xiàn)
- php 3行代碼的分頁(yè)算法(求起始頁(yè)和結(jié)束頁(yè))
- php實(shí)現(xiàn)猴子選大王問(wèn)題算法實(shí)例
- PHP貪婪算法解決0-1背包問(wèn)題實(shí)例分析
- php約瑟夫問(wèn)題解決關(guān)于處死犯人的算法
- PHP基于回溯算法解決n皇后問(wèn)題的方法示例
- PHP使用棧解決約瑟夫環(huán)問(wèn)題算法示例
- PHP基于遞歸算法解決兔子生兔子問(wèn)題
- PHP實(shí)現(xiàn)的楊輝三角求解算法分析
相關(guān)文章
當(dāng)前比較流行的兩款PHP加密、解密工具Zend Guard和iconCube介紹
這篇文章主要介紹了當(dāng)前比較流行的兩款PHP加密、解密工具Zend Guard和iconCube介紹,本文還給出了iconCube的安裝教程,需要的朋友可以參考下2014-09-09php實(shí)現(xiàn)將base64格式圖片保存在指定目錄的方法
這篇文章主要介紹了php實(shí)現(xiàn)將base64格式圖片保存在指定目錄的方法,涉及php針對(duì)圖片文件的傳輸、判定及轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2016-10-10php數(shù)據(jù)訪問(wèn)之查詢關(guān)鍵字
本文根據(jù)數(shù)據(jù)庫(kù)中的car表做一個(gè)汽車查詢頁(yè)面,鞏固php查詢關(guān)鍵字操作,感興趣的小伙伴們可以參考一下2016-05-05PHP簡(jiǎn)單實(shí)現(xiàn)文本計(jì)數(shù)器的方法
這篇文章主要介紹了PHP簡(jiǎn)單實(shí)現(xiàn)文本計(jì)數(shù)器的方法,涉及PHP針對(duì)文本文件的簡(jiǎn)單判斷,讀取及寫入等操作技巧,需要的朋友可以參考下2016-04-04php中使用preg_replace函數(shù)匹配圖片并加上鏈接的方法
preg_replace 執(zhí)行正則表達(dá)式的搜索和替換,如果只是單純的匹配字符串建議使用str_replace(),因?yàn)槠鋱?zhí)行效率高的多2013-02-02將一維或多維的數(shù)組連接成一個(gè)字符串的php代碼
自定義一個(gè)函數(shù) ,把一個(gè)數(shù)組變成用,(逗號(hào))連接起來(lái)的字符串 (注意:應(yīng)考慮到多維數(shù)組的情況,并以返回值的形式返回)2010-08-08apache+codeigniter 通過(guò).htcaccess做動(dòng)態(tài)二級(jí)域名解析
今天將服務(wù)器php版本升到了5.4.4,然后將之前的一個(gè)項(xiàng)目改用apache,動(dòng)態(tài)二級(jí)轉(zhuǎn)向用.htcaccess實(shí)現(xiàn)了動(dòng)態(tài)二級(jí)域名解析,共享一下2012-07-07一些php項(xiàng)目中比較通用的php自建函數(shù)的詳解
本篇文章是對(duì)一些php項(xiàng)目中比較通用的php自建函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06