본문 바로가기
Programming/Algorithm

백준 14501 퇴사

by OKOK 2018. 4. 14.

1. 설계를 완벽하게 합니다. (예제 3개 돌리기)

2. 경우의 수를 자세히 나열합니다.

3. 초기화 조건을 확인합니다.

4. 가지치기를 합니다.

5. 예제와 같이 변수를 선언합니다. 


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
17:42
17:49
14501 퇴사문제
1. 설계를 명확히 합니다 (예제 3개 돌리기)
2. 경우의 수를 나열합니다.
3. 초기화 조건을 확인합니다.
4. 가지치기를 합니다.
5. 예제와 같이 변수와 자료구조를 선택합니다.
*/
 
#include <iostream>
#include <algorithm>
using namespace std;
 
int N;
int T[16];
int P[16];
int maxVal; 
 
void problemIn() {
    cin >> N;
    for (int i = 1; i <= N; i++) {
        cin >> T[i] >> P[i];
    }
}
 
void init() {
 
}
 
void dfs(int day, int sum) {
 
    if (day >= (N + 1)) {
        maxVal = max(maxVal, sum);
        return;
    }
    if (day + T[day] <= (N + 1)) {
        dfs(day + T[day], sum + P[day]);
    }
    if (day + 1 <= (N + 1)) {
        dfs(day + 1, sum);
    }
}
 
 
 
void solve() {
 
    dfs(10);
 
 
}
 
int main() {
    problemIn();
    solve();
    cout << maxVal << endl;
    return 0;
}
cs