문제:
14501번: 퇴사
첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.
www.acmicpc.net
코드:
P[i]의 인덱스는 i == N - 1까지 유효 -> P[i] 사용 전 i < N chk(IN과 동일)
ㄴ배열 쓰기 전에 boundary chk 필수
i == N까지 벌어들인 수익이 인정됨 -> 탈출조건 i > N
#include <iostream>
#define f(i, n) for(int i = 0; i < (n); ++i)
using namespace std;
int N;
int T[15], P[15];
int ans;
void BF(int i, int Ps) {
if (i > N) return;
if (Ps > ans) ans = Ps;
BF(i + 1, Ps);
if(i < N) BF(i + T[i], Ps + P[i]);
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> N;
f(i, N) cin >> T[i] >> P[i];
BF(0, 0);
cout << ans;
return 0;
}