No older revisions available
No older revisions available
~cpp
#include <iostream>
using namespace std;
int Mcount = 0; //이동횟수세기 위한 전역변수
int hanoi(int disk,int start, int other, int finish){
Mcount++; //함수가 호출될때 마다 1씩 증가
// 마지막이거나 디스크가 1일때 start 기둥 에서 finish 기둥 으로 옮김
if(disk == 1)
cout << start << "에서 " << finish << endl;
// 디스크갯수가 1이 아니면서 마지막이 아닐때
else
{
hanoi(disk-1,start,finish,other); // 큰원반을 뺀 위에 것들을 other 기둥으로 옮기는 재귀함수 호출
cout << start << "에서 " << finish << endl;
hanoi(disk-1,other,start,finish); // other 기둥에 있는 것을 finish 기둥으로 옮기는 재귀함수 호출
}
return Mcount;
}
void main(){
int disk,MoveCount;
cout << "디스크 갯수 : ";
cin >> disk;
MoveCount = hanoi(disk,1,2,3);
cout << endl << "최소 이동횟수" << MoveCount << endl;
}