본문 바로가기

Computer Science/Algorithm

[BOJ 14501] 퇴사

이 문제는 상담할 수 있는 N일이 주어지고 상담을 마치는데 걸리는 시간과 상담을 했을 때 얻는 수익이 주어진다. N+1일날 퇴사를 하고자 할때 남은 N일 동안 상담을 진행하여 낼 수 있는 최대 수익을 구하는 문제다.


문제 풀이 : 각 날에 상담을 한다 / 안 한다로 구분하여 모든 경우의 수를 탐색해 최대 수익을 계산했다.



 

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
#include <iostream>
#include <vector>
using namespace std;
 
int N;
int ans;
 
void solve(vector <pair <intint> > &v, int day, int pay) {
    if (day > N) {
        return;
    }
 
    if (day==N) {
        if (ans < pay) ans = pay;
        return;
    }
 
    solve(v, day + v[day].first, pay+v[day].second);
    solve(v, day + 1, pay);
}
int main() {
    cin >> N;
    vector <pair<intint> > v(N);
 
    ans = 0;
    for (int i = 0; i < N; i++) {
        int T; int P;
        cin >> T >> P;
        v[i].first = T;
        v[i].second = P;
    }
 
    solve(v,0,0);
 
    cout << ans << '\n';
 
    return 0;
 
}
cs


반응형

'Computer Science > Algorithm' 카테고리의 다른 글

[BOJ 14891] 톱니바퀴  (0) 2018.10.17
[BOJ 14888] 연산자 끼워넣기  (0) 2018.10.17
삼성 SWEA 점심 식사시간  (0) 2018.10.17
[BOJ 16137] 견우와 직녀  (0) 2018.10.16
[BOJ 9095] 1, 2, 3 더하기  (0) 2018.08.13