问题是: 你有许多已知重量为w1,...,wn的宝石。编写一个程序,将石头重新排列成两堆,这样桩之间的重量差异很小。
INPUT: 输入包含结石数n(1≤n≤20)和由白色空格分隔的结石w1,...,wn(整数,1≤wi≤100000)的权重。
输出: 输出一个数字,表示石桩之间可能的最小重量差异。
我正在处理这个问题并编写了正常运行的代码。但我没有几个测试用例(我没有测试用例,因为它是一个在线编译器)我无法弄明白,如果我错过了与上述问题相关的事情。如果有人在我的代码中发现错误,请帮忙。提前致谢。我的代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class stone {
public static void main(String[] args) {
int b1 = 1;
int q = 0;
List<Integer> l = new ArrayList<Integer>();
Scanner in = new Scanner(System.in);
System.out.println("enter no. of stones");
b1 = in.nextInt();
if (b1 >= 1 && b1 <= 20) {
int[] z = new int[b1];
System.out.println("enter the weights of the stones seperated by a space: ");
for (int i = 0; i < b1; i++) {
z[i] = in.nextInt();
}
if (z.length >= 1 && z.length <= 10000) {
for (int i = 0; i < z.length - 1; i++) {
q = Math.abs(z[i + 1] - z[i]);
l.add(q);
}
Collections.sort(l);
System.out.println(l.get(0));
}
}
in.close();
}
}
输入:N = 5,重量:2 6 48 96 25(我自己的测试用例) 输出:4