Приветствую всех! Есть такая задача: вводится 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));
}
}
Этот алгоритм работает гораздо быстрее, но временами выдает неправильные ответы на некоторых тестах (тестов у меня нет). Хотелось бы узнать, как решить эту проблему, или как минимум найти вышеупомянутые тесты. Возможно, этот алгоритм правильно работает только при числах, идущих по порядку?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Использовал Jsoup в андроид приложениях, все работало нормальноТот же самый jsoup
Есть java класс, в нем есть код и импорты от одной jar библиотекиКак мне собрать из них jar
Здравствуете вот задался вопросом как как красиво и немаловажно правильно вывести дату и время в textView ,все прошлые попытки увенчались провалом(Заранее...