看板 NTUEE108HW 關於我們 聯絡資訊
※ 引述《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