您的位置:首页 > 其它

uva 562 - Dividing coins

2013-05-08 21:34 501 查看
/*
ID: daniel.20
LANG: JAVA
TASK: shopping
*/

import java.io.*;

import java.util.*;

public class Main{
public static void main (String [] args) throws Exception {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
while(n-->0){
int num = scan.nextInt();
int[] coins = new int[num+1];
int sum = 0;
for(int i =1;i<=num;i++){
coins[i] = scan.nextInt();
sum+=coins[i];
}
int target = sum>>1;
int dp[] = new int[target+1];
for(int i=1;i<num+1;i++){
for(int j=target;j>=coins[i];j--){
dp[j] = Math.max(dp[j-coins[i]]+coins[i], dp[j]);
}
}
System.out.println(Math.abs(sum-2*dp[target]));
}
}
}


之前A过的题,没贴上来。

其实没什么多说了,一个小转化,以sum的一半做背包的容量,尽量装满。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: