[航海]アルゴリズム学習(白駿#11729)
3702 ワード
白駿#11729-ハノイの塔
ショートカット
質問する
3本の棒があり、1本目の棒にはn個の半径の異なる円板が積み上げられている.各円板は半径の大きい順に積み上げられている.現在、修道僧たちは以下の規則に従って、最初の棒から3番目の棒に移動します.
一度に1枚の原版を別の塔に移すしかない.
積み上げられたフィルムはいつも上のほうが下のより小さい.
プログラムを作成し、この操作を実行するために必要な移動順序を出力します.ただし、移動回数を最小限に抑える必要があります.
下図は5枚のバックグラウンドの例です.
I/Oルール
1.入力
第1行は、第1の棒に積まれた円板の個数N(1≦N≦20)を与える.
2.出力
質問へのアクセス
一度に1枚のオリジナルしか移動できません.(2つ以上同時に運べない)
2.積み上げられた原版は常に上のものが下のものより小さくなければならない.(大きさは反転できません)
3.図は
1번 위치가 시작점, 2번이 보조, 3번이 목표점
である.3つの空間を用いて、原版の(재귀
)関数を次々と移動させる.4.各ディスクがどのような順序で移動するかを印刷します.
参照YouTube
コード#コード#
def hanoi(n, frm, to, otr):
if n < 2:
print(frm, to) # frm에서 to로 이동
return
hanoi(n-1, frm, otr, to) # 맨 아래칸을 제외하고 frm에서 otr로 재귀적 이동
print(frm, to) # 맨아래 원반 목적지로 이동
hanoi(n-1, otr, to, frm) # otr로 옮겼던 원반 to로 이동
n = int(input())
print((2**n)-1)
hanoi(n, 1, 3, 2)
Reference
この問題について([航海]アルゴリズム学習(白駿#11729)), 我々は、より多くの情報をここで見つけました https://velog.io/@ipinid613/항해알고리즘-스터디백준-11729テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol