Java练习题2020-4
小明今天收了N个鸡蛋,每个鸡蛋各有重量,现在小明想找M个重量差距最小的鸡蛋摆成一盒出售,输出符合条件的最重一盒鸡蛋的总重量
输入说明:第一行,鸡蛋个数N(N<1000) 每盒个数M(M<N);第二行,N个鸡蛋重量(浮点)
输出说明:符合条件的最重一盒鸡蛋的总重量(保留2位小数)
输入样例:8 4
11 9 12 5 10 19 8 6
输出样例:42.00
package _2020Ti;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
/*
小明今天收了N个鸡蛋,每个鸡蛋各有重量,
现在小明想找M个重量差距最小的鸡蛋摆成一盒出售,
输出符合条件的最重一盒鸡蛋的总重量
输入说明:第一行,鸡蛋个数N(N<1000) 每盒个数M(M<N);
第二行,N个鸡蛋重量(浮点)
输出说明:符合条件的最重一盒鸡蛋的总重量(保留2位小数)
输入样例:8 4
11 9 12 5 10 19 8 6
输出样例:42.00
*/
public class Test4 {
public static void main(String[] args) {
// 装鸡蛋重量
List<Double> list = new ArrayList<>();
//装每盒鸡蛋 重量
List<Double> list2 = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
String[] s1 = line.split(" ");
String line2 = scanner.nextLine();
String[] s2 = line2.split(" ");
// 鸡蛋加入了集合并排序
for (int i = 0; i < s2.length; i++) {
list.add(Double.parseDouble(s2[i]));
}
Collections.sort(list);
//想了很久怎样能达到的公平 hhh 结果发现没有
//那我就排序 拿一大一小 hhh 感觉能达到所谓的公平
//获取每盒放几个
//鸡蛋重量
Double egeWeight =0.00;
int num=Integer.parseInt(s1[1]); // 4
// 为 一个标志 每次从头或者尾部拿几个
int flag = num /2;
// 循环几次
int ci =Integer.parseInt(s1[0]) / Integer.parseInt(s1[1]);
//开始
int begin = 0;
while (begin < ci){
int touCi = 0;
while (touCi < ci){
egeWeight += list.get(0);
list.remove(0);
touCi++;
}
int weiCi = 0;
while(weiCi < ci){
egeWeight += list.get(list.size() -1);
list.remove(list.size() -1);
weiCi++;
}
begin++;
list2.add(egeWeight);
egeWeight =0.0;
}
Collections.sort(list2);
System.out.println(list2.get(list2.size()-1));
// //就差放鸡蛋步骤了
// //获取每盒放几个
//
// int num=Integer.parseInt(s1[1]);
// //鸡蛋个数
//
// int egeNum = Integer.parseInt(s1[0]);
//
// //鸡蛋重量
//
// double egeWeight = 0;
// // 控制循环次数
// int flag = 0;
// for (int i = 0; i < list.size(); i++) {
//
//
// egeWeight += list.get(i);
// flag ++;
// if (flag == num){
// list2.add(egeWeight);
// egeWeight =0;
// flag =0;
// }
// }
//
// Collections.sort(list2);
// System.out.println(list2.get(list2.size() -1));
}
}