[伯俊]14501退社(シルバー4)
白駿(シルバー4)-14501.退社(シルバー4)
耳で解いた!
ちょっと考えたら部分集合で解けた
毎週2つの選択肢があります.当日の問い合わせではなく!
問い合わせがない場合は、1日だけ日付を上げてから解決を呼びます.
ソロを呼ぶ前に、辞める前かどうかをチェックします.
に答える
耳で解いた!
ちょっと考えたら部分集合で解けた
毎週2つの選択肢があります.当日の問い合わせではなく!
問い合わせがない場合は、1日だけ日付を上げてから解決を呼びます.
//선택하지 않았을 경우
solve(day+1, sum);
選択すると、相談にかかる時間と日数に、相談と受けたお金を合計して、解決を呼びます.ソロを呼ぶ前に、辞める前かどうかをチェックします.
//선택했을 경우-day체크도 해야한다.
if(arr[day][0] + day<=n)
solve(day+arr[day][0],sum+arr[day][1]);
コード全体を以下に示します.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static public int max,n;
static public int[][] arr;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arr = new int[n][2];
for(int i=0; i<n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
max = 0;
solve(0,0);
System.out.println(max);
}
static public void solve(int day, int sum) {
//기저조건
if(n == day) {
max = Math.max(max, sum);
return;
}
//선택했을 경우-day체크도 해야한다.
if(arr[day][0] + day<=n)
solve(day+arr[day][0],sum+arr[day][1]);
//선택하지 않았을 경우
solve(day+1, sum);
}
}
Reference
この問題について([伯俊]14501退社(シルバー4)), 我々は、より多くの情報をここで見つけました https://velog.io/@humblechoi/백준-14501.-퇴사실버4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol