数组差异最小

时间:2015-02-02 18:16:42

标签: java arrays

问题是: 你有许多已知重量为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

0 个答案:

没有答案