#45137: 一點提示


harlivy_forever (噴火水雞肉飯)

學校 : 國立嘉義高級中學
編號 : 160563
來源 : [140.113.126.96]
最後登入時間 :
2025-03-12 23:27:14
a227. 三龍杯 -> 河內之塔 -- 2011三龍杯 (成附建杯) | From: [118.171.216.72] | 發表日期 : 2025-01-13 10:48

把柱子分為三種身分:當前盤子所在的 source,盤子應該被移動到的 target ,以及剩下用來輔助移動的 auxiliary ,注意柱子 A、B 和 C 的編號是固定的,但這些身分並不是,也就是說就算這一步 A 是 source,但下一步 source 可能會變成 B ,身分取決於當前這一步盤子該從哪裡移到哪裡。

當要移動 n 塊時,步驟如下:

  1. 把上面的 n-1 塊從 source 移到 auxiliary
  2. 把最底下最大塊那塊從 source 移到 target
  3. 把剛剛移走的上面 n-1 塊從 auxiliary 移到 target

當在處理上面 n-1 塊時,可以視為最底下那塊不存在,因為它不會對上面盤子的移動造成任何影響。也就是說,在第一步和第三步時,會分別進入一次新的遞迴,只是這次要處理的塊數變成 n-1。

看起來很複雜,但其實只要放心大膽地寫下去,就會發現電腦會讓魔法成真 XD

 
ZeroJudge Forum