728x90
https://www.acmicpc.net/problem/11729
사실 문제를 보고 꽤 고민을 해봤는데, 어떻게 푸는 문제인지 전혀 감이 잡히지 않았다.
아직 PS에 대한 감이 많이 부족한것 같다.
함수를 recursive하게 정의하는 부분에서 사고가 좀 막힌것 같다.
탑이 있는곳, 탑이 옮겨질 곳, 안쓰는 곳 세개로 함수를 구현한 다음에
옮길 함수의 탑 층수가 1일때만 옮기고, 1 이상일때는 층수를 하나 줄여서 재귀 구조로 짜면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <iostream>
using namespace std;
int answernum;
int Ans(int num){
int answer=0;
int i=1;
while(i<=num){
answer = 2*answer+1;
i++;
}
return answer;
}
void hanoi(int num, int from, int to, int not_use){
if(num==1)
cout<<from<<" "<<to<<"\n";
else{
hanoi(num-1,from,not_use,to);
hanoi(1,from,to,not_use);
hanoi(num-1,not_use,to,from);
}
}
int main(void){
int num;
cin>>num;
cout<<Ans(num)<<"\n";
hanoi(num,1,3,2);
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
아직 함수를 어떤 식으로 구현해야 하는지에 대한 감이 부족한것 같다. 연습만이 살길.
'알고리즘 > 백준' 카테고리의 다른 글
백준 1759 - 암호만들기 (백트래킹) c++ (0) | 2020.01.25 |
---|---|
백준 1992 - 쿼드트리 (분할정복) C++ (0) | 2020.01.24 |
백준 1780 종이의 개수 - 분할정복 - C++ (0) | 2020.01.23 |
백준 2110 공유기 설치 - 이분탐색 C++ (0) | 2020.01.22 |
백준 2805 나무자르기 - 이분탐색 C++ (미완) (0) | 2020.01.22 |