这道题更纠结了,,,一直Wrong answer。最后才知道,只是因为我用了一下下下下子除法。。。又由于某种蛋疼的原因,导致了精度的丢失!谨记,ACM中能不用除法,就不用除法!
import java.util.Scanner;
public class Main1005 {
public static void main(String[] args) {
int n, i, sum = 0;
int[] a = new int[21];
Scanner input = new Scanner(System.in);
n = input.nextInt();
for (i = 0; i < n; i++) {
a[i] = input.nextInt();
sum += a[i];
}
int key, k, min = sum; //这里!这里!原来我的代码是 “min = sum / 2;”,然后拿min去比较,结果,无论怎么写,都是Wrong answer....
for (k = 0; k < (1 << n); k++) {
key = 0;
for (i = 0; i < n; i++)
if ((1 & (k >> i)) != 0)
key += a[i];
if (Math.abs(2 * key - sum) < min)
min = Math.abs(2 * key - sum);
}
System.out.println(min);
}
}