Programming/Algorithm
백준 14501 퇴사
OKOK
2018. 4. 14. 17:50
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(1, 0); } int main() { problemIn(); solve(); cout << maxVal << endl; return 0; } | cs |