白準11729号ハノイタワー移動順
質問元:https://www.acmicpc.net/submit/11729/33677793
解法
解法
1.n-1枚の円板を6-start-endロッドに移動します。
2.最後のn番の円板を端に移動します。
3.n-1個のディスクが6-start-endロッドからendロッドに移動します。
4.作成する関数は、start->endにオリジナルを移動する関数です。
5.一番大切なのは6-start-endを思いつくこと...
answer =[]
def solve(n,start,end):
global answer
if n == 1:
answer.append((start, end))
else:
solve(n-1,start,6-start-end) # 1단계 n-1 개의 원판을 2번 막대로 옮김
answer.append((start,end)) # 2단계 마지막인 n번 원판을 3번 막대로 옮김
solve(n-1,6-start-end,end) # 3단계 : 2번 원판의 n-1개의 원판을 3번 막대로 옮김
solve(int(input()),1,3)
print(len(answer))
for i in answer:
print(i[0],i[1])
Reference
この問題について(白準11729号ハノイタワー移動順), 我々は、より多くの情報をここで見つけました
https://velog.io/@highway92/백준-11729번-하노이-탑-이동-순서
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
2.最後のn番の円板を端に移動します。
3.n-1個のディスクが6-start-endロッドからendロッドに移動します。
4.作成する関数は、start->endにオリジナルを移動する関数です。
5.一番大切なのは6-start-endを思いつくこと...
answer =[]
def solve(n,start,end):
global answer
if n == 1:
answer.append((start, end))
else:
solve(n-1,start,6-start-end) # 1단계 n-1 개의 원판을 2번 막대로 옮김
answer.append((start,end)) # 2단계 마지막인 n번 원판을 3번 막대로 옮김
solve(n-1,6-start-end,end) # 3단계 : 2번 원판의 n-1개의 원판을 3번 막대로 옮김
solve(int(input()),1,3)
print(len(answer))
for i in answer:
print(i[0],i[1])
Reference
この問題について(白準11729号ハノイタワー移動順), 我々は、より多くの情報をここで見つけました
https://velog.io/@highway92/백준-11729번-하노이-탑-이동-순서
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
4.作成する関数は、start->endにオリジナルを移動する関数です。
5.一番大切なのは6-start-endを思いつくこと...
answer =[]
def solve(n,start,end):
global answer
if n == 1:
answer.append((start, end))
else:
solve(n-1,start,6-start-end) # 1단계 n-1 개의 원판을 2번 막대로 옮김
answer.append((start,end)) # 2단계 마지막인 n번 원판을 3번 막대로 옮김
solve(n-1,6-start-end,end) # 3단계 : 2번 원판의 n-1개의 원판을 3번 막대로 옮김
solve(int(input()),1,3)
print(len(answer))
for i in answer:
print(i[0],i[1])
Reference
この問題について(白準11729号ハノイタワー移動順), 我々は、より多くの情報をここで見つけました
https://velog.io/@highway92/백준-11729번-하노이-탑-이동-순서
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
answer =[]
def solve(n,start,end):
global answer
if n == 1:
answer.append((start, end))
else:
solve(n-1,start,6-start-end) # 1단계 n-1 개의 원판을 2번 막대로 옮김
answer.append((start,end)) # 2단계 마지막인 n번 원판을 3번 막대로 옮김
solve(n-1,6-start-end,end) # 3단계 : 2번 원판의 n-1개의 원판을 3번 막대로 옮김
solve(int(input()),1,3)
print(len(answer))
for i in answer:
print(i[0],i[1])
Reference
この問題について(白準11729号ハノイタワー移動順), 我々は、より多くの情報をここで見つけました https://velog.io/@highway92/백준-11729번-하노이-탑-이동-순서テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol