하노이 탑에서 출발기둥에 있는 여러 원반을 도착기둥으로 모두 옮기는 문제입니다 이를 해결하는 다음 프로그램에 대해 빈칸을 채우세요 단, 원반은 한 번에 하나씩만 옮길 수 있고, 작은 원반 위에 더 큰 원반을 옮길 수 없습니다.
하노이 탑의 원반 개수를 입력하세요(10개 이하) : 2
1 . .
2 . .
--- --- ---
A B C
. . .
2 1 .
--- --- ---
A B C
. . .
. 1 2
--- --- ---
A B C
. . 1
. . 2
--- --- ---
A B C
하노이 탑의 원반 개수를 입력하세요(10개 이하) : 3
1 . .
2 . .
3 . .
--- --- ---
A B C
. . .
2 . .
3 . 1
--- --- ---
A B C
. . .
. . .
3 2 1
--- --- ---
A B C
. . .
. 1 .
3 2 .
--- --- ---
A B C
. . .
. 1 .
. 2 3
--- --- ---
A B C
. . .
. . .
1 2 3
--- --- ---
A B C
. . .
. . 2
1 . 3
--- --- ---
A B C
. . 1
. . 2
. . 3
--- --- ---
A B C
하노이 탑의 원반 개수를 입력하세요(10개 이하) : 4
1 . .
2 . .
3 . .
4 . .
--- --- ---
A B C
. . .
2 . .
3 . .
4 1 .
--- --- ---
A B C
. . .
. . .
3 . .
4 1 2
--- --- ---
A B C
. . .
. . .
3 . 1
4 . 2
--- --- ---
A B C
. . .
. . .
. . 1
4 3 2
--- --- ---
A B C
. . .
. . .
1 . .
4 3 2
--- --- ---
A B C
. . .
. . .
1 2 .
4 3 .
--- --- ---
A B C
. . .
. 1 .
. 2 .
4 3 .
--- --- ---
A B C
. . .
. 1 .
. 2 .
. 3 4
--- --- ---
A B C
. . .
. . .
. 2 1
. 3 4
--- --- ---
A B C
. . .
. . .
. . 1
2 3 4
--- --- ---
A B C
. . .
. . .
1 . .
2 3 4
--- --- ---
A B C
. . .
. . .
1 . 3
2 . 4
--- --- ---
A B C
. . .
. . .
. . 3
2 1 4
--- --- ---
A B C
. . .
. . 2
. . 3
. 1 4
--- --- ---
A B C
. . 1
. . 2
. . 3
. . 4
--- --- ---
A B C
코드 빈칸 채우기
import java.util.Scanner;
public class TowerOfHanoi
{
private static [][] tower = new [3][10];
private static [] diskCountPerTower = new [3];
private static totalDiskCount;
private static initializeTower( diskCount ) {
totalDiskCount = diskCount;
diskCountPerTower[0] = diskCount;
diskCountPerTower[1] = 0;
diskCountPerTower[2] = 0;
( i = 0; i < diskCount; i ) {
tower[0][i] = diskCount - i;
}
}
private static printTower() {
( line = totalDiskCount-1; line 0; line ) {
( number = 0; number < 3; number ) {
( tower[number][line] 0 )
System.out.print( " " + tower[number][line] + " " );
System.out.print( " . " );
}
System.out.println();
}
System.out.println(" --- --- ---\n A B C \n");
}
private static void moveOneDisk( int from, int to ) {
top = diskCountPerTower[];
disk = tower[][top];
tower[][top] = 0;
top = diskCountPerTower[];
tower[][top] = disk;
printTower();
}
private static void moveDisks( int diskCount, int from, int temp, int to ) {
( diskCount 1 ) {
( , );
}
{
( diskCount-1, , , );
( , );
( diskCount-1, , , );
}
}
public static void main( String[] args ) {
Scanner scan = new Scanner( System.in );
System.out.print( "하노이 탑의 원반 개수를 입력하세요(10개 이하) : " );
diskCount = scan.nextInt();
initializeTower( diskCount );
printTower();
( diskCount, 0, 1, 2 );
scan.close();
}
}