Partition problem

270
14 мая 2017, 22:53

Приветствую всех! Есть такая задача: вводится n чисел (1 < n < 1000 , у вводимых чисел тот же диапазон). Нужно разбить числа на два массива с минимальной разницей сумм. Partition problem в общем. Написал код, который перебирает все варианты, он работает правильно, но слишком медленно. Нашел на википедии подобный алгоритм решения этой задачи:

import java.io.*;
import java.util.Arrays;
public class Main
{
    public static void main(String[] args) throws IOException
    {
        //Ввод чисел
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        int[] array = new int[n];
        String x;
        StringBuilder s = new StringBuilder("");
        while ((x = reader.readLine()) != null)
            s = s.append(x).append(' ');
        String[] strs = (s.toString().trim().split("\\s+"));
        for (int i = 0; i < strs.length; i++)
            array[i] = Integer.parseInt(strs[i]);
        //собственно сам алгоритм.
        Arrays.sort(array);
        int suma = 0, sumb = 0;
        for (int i = array.length; i > 0;) {
            if (suma < sumb)
                suma += array[--i];
            else
                sumb += array[--i];
        }
        System.out.print(Math.abs(suma - sumb));
    }
}

Этот алгоритм работает гораздо быстрее, но временами выдает неправильные ответы на некоторых тестах (тестов у меня нет). Хотелось бы узнать, как решить эту проблему, или как минимум найти вышеупомянутые тесты. Возможно, этот алгоритм правильно работает только при числах, идущих по порядку?

READ ALSO
ExceptionInInitializerException при вызове Jsoup.connect().get();

ExceptionInInitializerException при вызове Jsoup.connect().get();

Использовал Jsoup в андроид приложениях, все работало нормальноТот же самый jsoup

269
Эмуляция SystemClock.uptimeMillis

Эмуляция SystemClock.uptimeMillis

Как эмулировать на Java эту функцию из Android

241
Как собрать Jar в Jar?

Как собрать Jar в Jar?

Есть java класс, в нем есть код и импорты от одной jar библиотекиКак мне собрать из них jar

272
Как вывести дату и время в textVIew.

Как вывести дату и время в textVIew.

Здравствуете вот задался вопросом как как красиво и немаловажно правильно вывести дату и время в textView ,все прошлые попытки увенчались провалом(Заранее...

298