※ 引述《polarmouse (PolarMouse)》之銘言:
: 有誰知道這怎麼寫ㄚ? 題目唸完的時候我就快暈了...
呃 recusive啊 很明顯的
---
現在有a b c三根竿子 有n個盤子堆在a上面
現在你所要做的事情是把這n個盤子移到 呃 b上面就可以了吧
要把這n個盤子移到b上面要做什麼呢?我們先把a上面那一堆盤子分成兩部分
也就是上面n-1個和最下面一個 然後我們觀察兩個盤子的狀況
將兩個盤子從a移到b的做法是 第一個先移到c 把第二個移到b 再把第一個移到b
所以 我們知道 從a移動n個盤子到b的行為可以簡化成
移動上面的n-1個到c 移動第n個到b 把c上面那n-1個移到b
那移動那n-1個兩次怎麼做呢 如法炮製就好了 和移動n個是一樣的道理
---
寫一下大概的樣子好了
void hanoi(length, begin, temp, goal)
{
if (length > 1){
hanoi (length-1, begin ,goal, temp);
}
cout << begin << "->" << goal;
//我忘記那題要的輸出格式長怎樣了 應該是這樣吧
if (length > 1){
hanoi (length-1, temp, begin ,goal);
}
}
--
≡建國中學≡
9300924-24
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.214.221