Coding Is My Life

코딩은 인생

다이나믹 프로그래밍

[백준/C++][퇴사(14501번)]

산기대 컴공 2020. 12. 3. 22:19
728x90

문제

https://www.acmicpc.net/problem/14501

 

14501번: 퇴사

첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.

www.acmicpc.net

문제해결

1. 다이나믹 문제이지만 재귀를 이용하여 풀었다.

2. 각 DAY마다 재귀를 이용하여 상담이 가능한 날짜를 탐색했다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
int N,Max = 0;
int ary[16][2];
void DFS(int node,int count){
    if(count >= Max){Max = count;}
    for(int i = node;i<=N;i++){
        if(ary[i][0]+i-1>N){continue;}
        DFS(ary[i][0]+i,count+ary[i][1]);
    }
    return;
}
int main(void){
    cin >> N;
    for(int i = 1;i<=N;i++){
        cin >> ary[i][0>> ary[i][1];
    }
    for(int i = 1;i<=N;i++){
        if(ary[i][0]+i-1>N){continue;}
        DFS(ary[i][0]+i,ary[i][1]);  
    }
    cout << Max;
}
cs
728x90