ZOJ 문제 세트 - 1013 Great Equipment Java 구현
다음은 AC 의 자바 코드 입 니 다.
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
final int MAX_SIZE = 501;
//
// pre_carry[i][j] i, j
int[][] pre_carry = new int[MAX_SIZE][MAX_SIZE];
//
int[][] current_carry = new int[MAX_SIZE][MAX_SIZE];
//
int w1, s1, d1, w2, s2, d2, w3, s3, d3, c1, c2, c3, d4;
Scanner cin = new Scanner(System.in);
int no = 1;
while (true) {
int n = cin.nextInt();
if (n == 0) {
break;
}
//
w1 = cin.nextInt();
s1 = cin.nextInt();
d1 = cin.nextInt();
w2 = cin.nextInt();
s2 = cin.nextInt();
d2 = cin.nextInt();
w3 = cin.nextInt();
s3 = cin.nextInt();
d3 = cin.nextInt();
c1 = cin.nextInt();
c2 = cin.nextInt();
c3 = cin.nextInt();
d4 = cin.nextInt();
for (int i = 0; i < MAX_SIZE; i++) {
for (int j = 0; j < MAX_SIZE; j++) {
pre_carry[i][j] = -1;
}
}
// pre_carry[0][0] 0
pre_carry[0][0] = 0;
// n , ,
// pre_carry
while (n > 0) {
int w = cin.nextInt();
int s = cin.nextInt();
for (int i = 0; i < MAX_SIZE; i++) {
for (int j = 0; j < MAX_SIZE; j++) {
current_carry[i][j] = -1;
}
}
// i ,j ,k
for (int i = 0; w - i * w1 >= 0 && s - i * s1 >= 0; i++) {
for (int j = 0; w - i * w1 - j * w2 >= 0
&& s - i * s1 - j * s2 >= 0; j++) {
int w_remain = w - i * w1 - j * w2;
int s_remain = s - i * s1 - j * s2;
int k = Math.min(w_remain / w3, s_remain / s3);
// , current_carry
for (int ii = 0; ii < MAX_SIZE; ii++) {
for (int jj = 0; jj < MAX_SIZE; jj++) {
if (pre_carry[ii][jj] == -1) {
break;
}
current_carry[ii + i][jj + j] = Math.max(
current_carry[ii + i][jj + j], k
+ pre_carry[ii][jj]);
}
}
}
}
//
int[][] temp = pre_carry;
pre_carry = current_carry;
current_carry = temp;
n--;
}
// ,pre_carry
// ,
int max_defend = 0;
for (int i = 0; i < MAX_SIZE; i++) {
for (int j = 0; j < MAX_SIZE; j++) {
if (pre_carry[i][j] >= 0) {
int defend = 0;
if (d4 > c1 * d1 + c2 * d2 + c3 * d3) {
int set_num = Math.min(i / c1,
Math.min(j / c2, pre_carry[i][j] / c3));
defend = set_num * d4;
defend += (i - set_num * c1) * d1
+ (j - set_num * c2) * d2
+ (pre_carry[i][j] - set_num * c3) * d3;
} else {
defend = i * d1 + j * d2 + pre_carry[i][j] * d3;
}
max_defend = Math.max(max_defend, defend);
}
}
}
if (no == 1) {
System.out.print("Case " + no + ": " + max_defend);
} else {
System.out.print("
Case " + no + ": " + max_defend);
}
no++;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.