题目:某市市长获得了若干批口罩,每一批口罩的数目如下:(如果你把以下文
字复制到文本文件中,请务必检查复制的内容是否与文档中的一致。在试题目
录下有一个文件 mask.txt,内容与下面的文本相同)
9090400
8499400
5926800
8547000
4958200
4422600
5751200
4175600
6309600
5865200
6604400
4635000
10663400
8087200
4554000
现在市长要把口罩分配给市内的 2 所医院。由于物流限制,每一批口罩只
能全部分配给其中一家医院。市长希望 2 所医院获得的口罩总数之差越小越好。
请你计算这个差最小是多少?
答案提交
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
中间包含了中间过程数据测试play()方法 主体为text()方法的枚举
import java.util.Arrays;
import java.util.Scanner;
class exe{
public static void main(String[] args) {
student student=new student();
student.input();
student.text();
}
}
class student{
Scanner sc=new Scanner(System.in);
int [] arr1={9090400, 8499400, 5926800,8547000,4958200, 4422600, 5751200, 4175600, 6309600,5865200, 6604400, 4635000, 10663400, 8087200, 4554000};
int sum1;
int cha;
int sum2;
int sum3;
int compare=2000000000;
int n=1;
int[] arr2=new int[8];
public void input(){
for (int i = 0; i < 15; i++) {
sum1+=arr1[i];
}
}
public void text(){
for (int i = 0; i < 8; i++) {
arr2[0]=arr1[i];
for (int i1 = i+1; i1 < 9; i1++) {
arr2[1]=arr1[i1];
for (int i2 = i1+1; i2 < 10; i2++) {
arr2[2]=arr1[i2];
for (int i3 = i2+1; i3 < 11; i3++) {
arr2[3]=arr1[i3];
for (int i4 = i3+1; i4 < 12; i4++) {
arr2[4]=arr1[i4];
for (int i5 = i4+1; i5 < 13; i5++) {
arr2[5]=arr1[i5];
for (int i6 =i5+1; i6 < 14; i6++) {
arr2[6]=arr1[i6];
for (int i7 = i6+1; i7 < 15; i7++) {
arr2[7]=arr1[i7];
play();
}
}
}
}
}
}
}
}
}
public void play(){
sum2=arr2[0]+arr2[1]+arr2[2]+arr2[3]+arr2[4]+arr2[5]+arr2[6]+arr2[7];
cha=sum2-sum1+sum2;
sum3=sum1-sum2;
if (compare>Math.abs(cha)) {
compare = Math.abs(cha);
System.out.println("口罩总数:"+sum1);
System.out.println("第" + n++ + "次输出");
System.out.println("sum3"+" "+sum3);
System.out.println("sum2" + " " + sum2);
System.out.println(Arrays.toString(arr2));
System.out.println("cha" + " " + cha);
System.out.println("compare" + " " + compare);
System.out.println("-------------------------------------------------------");
System.out.println(compare);
}
}
}
最终的答案为2400