동적 계획 질문 - "게임 왕"은 각 게임에 하나의 성취치를 표시하는 동시에 모든 게임에 대해 통관에 필요한 일수를 추산한다. 그는 앞으로 X일 내에 자신이 게임을 할 수 있는 성취를 최대로 달성할 계획이다.
import java.util.Scanner;
/*
:
, J , , 。
, ! , “ ”。
, , 。
, , , X
, ?( , , 1 )
N X, , N N(1<=N<=10),X (1<=X<=1000)。
1 A1(0<=A1<=10000) B1 (1<=Bi<=500) 。
N+1 N An(0<=An<=10000) Bn (1<=Bn<=500)
。
2 2
10 1
20 2
20
:
3 4
10 2
18 3
10 2
:
20
*/
public class Q2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// N X, , N N(1<=N<=10),X (1<=X<=1000)。
int n = in.nextInt();
int x = in.nextInt();
// 1 A1(0<=A1<=10000) B1 (1<=Bi<=500) 。
// N+1 N An(0<=An<=10000) Bn (1<=Bn<=500)
int [] val = new int[n];
int [] days = new int[n];
for (int i = 0; i < n; i ++) {
val[i] = in.nextInt();
days[i] = in.nextInt();
}
in.close();
//
//dp[i][j], j, i
//
//dp[i][j] = max (dp[i - 1][j], dp[i - 1][ j - days[i - 1] ] + val[i - 1])
int [][] dp = new int[n + 1][x + 1];
// 0 0
for (int i = 1; i <= n; i++) {
dp[i][0] = 0;
}
// 0 0
for (int j = 0; j <= x; j++) {
dp[0][j] = 0;
}
// java 0,
for (int i = 1; i <= n; i ++) {
for (int j = x; j >= 0; j --) {
if (j < days[i - 1]) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - days[i - 1]] + val[i - 1]);
}
}
}
System.out.println(dp[n][x]);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
01 가방, 완전 가방, 다중 가방 dp(동적 기획 입문 dp)01 가방은 2진법으로 직접 표시할 수 있지만 데이터 양이 너무 많으면 시간을 초과하는 것이 폭력이다.01 가방의 사상은 바로 이 물품에 대해 내가 넣은 가치가 큰지 안 넣은 가치가 큰지 비교하여 방정식 f[i][v...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.