题目描述:
2组的和相差最小。
例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。
输出
输出这个最小差
输入示例
5
1
2
3
4
5
输出示例
1
import java.util.Scanner;
/**
* 正整数分组
*/
public class PosInterGroup {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int sum = 0;
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = scanner.nextInt();
sum += a[i];
}
int[] f = new int[sum +5];
int mid = sum / 2;
for (int i =0; i < n; i++) {
for (int j = mid; j >= a[i]; j--) {
f[j] = Math.max(f[j], f[j - a[i]] + a[i]);
}
}
System.out.println((sum - f[mid]) - f[mid]);
}
}