邮票分你一半

    xiaoxiao2021-03-26  17

    邮票分你一半

    时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述      小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明。每张邮票上都有分值,他们想把这些邮票分成两份,并且使这两份邮票的分值和相差最小(就是小珂得到的邮票分值和与小明的差值最小),现在每张邮票的分值已经知道了,他们已经分好了,你知道最后他们得到的邮票分值和相差多少吗? 输入 第一行只有一个整数m(m<=1000),表示测试数据组数。 接下来有一个整数n(n<=1000),表示邮票的张数。 然后有n个整数Vi(Vi<=100),表示第i张邮票的分值。 输出 输出差值,每组输出占一行。 样例输入 2 5 2 6 5 8 9 3 2 1 5 样例输出 0 2

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); while(n--!=0) { int m=scanner.nextInt(); int arr[]=new int[m]; int sum=0; for(int i=0;i<m;i++) { arr[i]=scanner.nextInt(); sum+=arr[i]; } int temp[]=new int[sum/2+5]; for(int i=0;i<m;i++) { for(int j=sum/2;j>=arr[i];j--) { temp[j]=temp[j]>temp[j-arr[i]]+arr[i]?temp[j]:temp[j-arr[i]]+arr[i]; } } System.out.println(sum-temp[sum/2]-temp[sum/2]); } } }

    转载请注明原文地址: https://ju.6miu.com/read-658283.html

    最新回复(0)