BOJ 14501.퇴사
입력
1 : N(날짜)
2 ~ N+1 : T_i(기간) P_i(금액)
주의사항
1) STL에 정의돼있는 함수 이름과 중복되지 않게 변수 선언하기
구현방식: DFS 기반 완전탐색
1) DAY 1 ~ DAY N까지 DFS(배열 접근 0 ~ N-1)
2) DFS 함수
-종료 조건
: 탐색하려는 day가 N이상인가?(배열 접근 고려)-재귀호출
①탐색하는 day와 해당 상담기간의 합이 N이하일 때, cur_price 가산
②탐색하는 day와 해당 상담기간의 합부터 N까지 재귀함수 호출
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
using namespace std;
int maximum = 0;
vector <int> T, P;
int N, T_tmp, P_tmp;
void dfs(int day, int cur_price) {
if (day >= N) {
if (cur_price > maximum)
maximum = cur_price;
return;
}
else {
if(day + T[day] <= N)
cur_price += P[day];
for (int i = day + T[day]; i <= N; i++)
dfs(i, cur_price);
}
}
int main(void) {
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d %d", &T_tmp, &P_tmp);
T.push_back(T_tmp);
P.push_back(P_tmp);
}
for (int i = 0; i < N;i++)
dfs(i, 0);
printf("%d\n", maximum);
}
Author And Source
이 문제에 관하여(BOJ 14501.퇴사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@2duckyu/BOJ-14501.퇴사저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)