问题描述:
n个人参加拔河比赛,每个人有自己的重量,现在需要把他们分成两组进行比赛,每个人属于其中的一个组,两组的人员个数相差不能超过1。为使比赛公平,求使得两组重量差最小的分配。
问题解决代码
package org.lulu.learn; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /**
*Project:BaHeProblem *Created:Lulu *Date:2016/8/15 */
public class Test{
public static void main(String[]args){ try{
System.setIn(new FileInputStream(\"res/input.txt\"));
}catch(FileNotFoundException e){ e.printStackTrace(); }
Scanner scanner=new Scanner(System.in); //获取到输入的总人数 int sum=scanner.nextInt(); //存放所有人的体重
ArrayList for(int i=0;i //体重全部相加之后,求其平均值 for(Integer integer:list){ sum+=integer; } int average=sum/2; //新建第一队列表 ArrayList int func=func(list,count,average,first); System.out.println(func); System.out.println(first); list.removeAll(first); System.out.println(list); } public static int func(List //当第一队的人数为count时,结束递归 if(first.size()==count){ int firstSum=0; for(Integer integer:first){ firstSum+=integer; } return Math.abs(firstSum-sum); }else{ int min=Integer.MAX_VALUE; List int func=func(listTemp,count,sum,firstTemp); if(func if(min==0){ break; } first.clear(); first.addAll(minFirst); return min; } } } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务