https://www.acmicpc.net/problem/11729
재귀의 기본 of 기본인 하노이 탑 옮기기이다.
#include <iostream>
#include <vector>
using namespace std;
int cnt;
vector<pair<int, int> > answer;
void Hanoi(int from, int by, int to, int num){
if(num>0){
Hanoi(from, to, by, num-1);
answer.push_back(make_pair(from, to));
cnt++;
Hanoi(by, from, to, num-1);
}
}
int main(void){
int num = 0;
cin >> num;
Hanoi(1, 2, 3, num);
cout << cnt << "\n";
for(int i = 0; i<answer.size(); i++){
cout << answer[i].first << " " << answer[i].second << "\n";
}
}
'컴퓨터기본 > 문제풀이' 카테고리의 다른 글
유클리드 호제법을 이용한 최대공약수, 최대공배수 (0) | 2021.08.24 |
---|---|
Segmentation Fault (0) | 2021.08.23 |
[백준] 4949번: 균형잡힌 세상 (0) | 2021.08.08 |
[백준] 9012번: 괄호 (0) | 2021.08.07 |
[백준] 1152번: 단어의 개수 (0) | 2021.06.30 |