하노이탑: Difference between revisions
From CS Wiki
(ㅇ) |
(ㅇ) |
||
Line 1: | Line 1: | ||
출처 : [https:// | 시간복잡도 : O(2^n) | ||
출처 : [https://mysterlee.tistory.com/45] | |||
// PSEUDO CODE FROM A TO B | |||
void Hanoi(int N, int A, int TO, int B) { | |||
if (N == 1) { | |||
print(A->B); | |||
return; | |||
} | |||
Hanoi(N - 1, A, B, TO); | |||
print(A -> B); | |||
Hanoi(N - 1, TO, A, B); | |||
/* | /* | ||
Line 45: | Line 66: | ||
} | } | ||
출처 : [https://st-lab.tistory.com/96] | |||
// | |||
Latest revision as of 06:42, 2 August 2023
시간복잡도 : O(2^n)
출처 : [1]
// PSEUDO CODE FROM A TO B
void Hanoi(int N, int A, int TO, int B) {
if (N == 1) {
print(A->B);
return;
}
Hanoi(N - 1, A, B, TO);
print(A -> B);
Hanoi(N - 1, TO, A, B);
/*
모르면 외우자...
N : 원판의 개수
A : 출발지
B : 옮기기 위해 이동해야 장소
C : 목적지
*/
void Hanoi(int N, int A, int B, int C) {
// 이동할 원반의 수가 1개
if (N == 1) {
print(A + " " + C + "\n");
return;
}
// A -> B(N-1개)
Hanoi(N - 1, A, C, B);
// A->C(1개)
print(A + " " + C + "\n");
// B->C(N-1개)
Hanoi(N - 1, B, A, C);
}
출처 : [2]