Re: [商管] [資結]-河內塔

看板Grad-ProbAsk作者 (阿志)時間14年前 (2009/08/25 23:05), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《yesa315 (XD)》之銘言: : ※ 引述《fairwarning (一輪明月與藍夜!!)》之銘言: : : 請問河內塔的recursive algorithm : void Hanoi (n:disc,A,B,C:peg) 目標:把n個盤子從A柱般到C柱 搬動時大盤 : 要在小盤下方 : : { : : if(n==1) : { : move disc from A to C //只有一個盤子時 直接搬到C柱 : : } : : else //大於1個盤子 需遞迴搬動盤子 : : { : Hanoi(n-1,A,C,B); //先把放在A柱前面n-1個盤子搬到B柱 並且以C當作為搬動時 : //可以當作暫時放置盤子的地方 : move the disc n from A to C; //最後一個在A的最大盤子 直接搬到C柱 : Hanoi(n-1,B,A,C); //把放在B柱n-1個盤子搬到C柱 並且以A當作為搬動時 : //可以當作暫時放置盤子的地方 : : } : : } 圖形補充 以 n=3 為例 A B C | | | =|= | | ==|== | | ===|=== | | ******************* ******************* ******************* Move Disk 1 From A to C ; | | | | | | ==|== | | ===|=== | =|= ******************* ******************* ******************* Move Disk 2 From A to B ; | | | | | | | | | ===|=== ==|== =|= ******************* ******************* ******************* Move Disk 1 From C to B ; | | | | | | | =|= | ===|=== ==|== | ******************* ******************* ******************* Move Disk 3 From A to C ; | | | | | | | =|= | | ==|== ===|=== ******************* ******************* ******************* Move Disk 1 From B to A ; | | | | | | | | | =|= ==|== ===|=== ******************* ******************* ******************* Move Disk 2 From B to C ; | | | | | | | | ==|== =|= | ===|=== ******************* ******************* ******************* Move Disk 1 From A to C ; | | | | | =|= | | ==|== | | ===|=== ******************* ******************* ******************* -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.133.81

08/26 10:44, , 1F
太威了XD
08/26 10:44, 1F
文章代碼(AID): #1Aa_syjR (Grad-ProbAsk)
文章代碼(AID): #1Aa_syjR (Grad-ProbAsk)