62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
arrAy(50, 30, 4);//(工作人员,每月天数,休息的天数)这个4不能改变.我试了试改变,但结果是错的.
}
public static void arrAy(int myperson, int day, int dayPerson) {
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> list2 = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i < myperson; i++) {
list.add(i + 1);
}
Collections.shuffle(list);
ArrayList<Integer> lists = new ArrayList<Integer>();// 四倍
for (int i = 0; i <= 3; i++) {
for (Integer integer : list) {
lists.add(integer);
}
}
// 遍历总人数
//
int myCount = 0;//每月中多一个人的天数
int reultPerson = 0;//每天休息的人数平均;
reultPerson = myperson * dayPerson / day;
if ((day * reultPerson) <= lists.size()) {
myCount =lists.size() - (day) * reultPerson ;
System.out.println(myCount);
if (myCount > day) {
myCount = day;
}
} else {
System.out.println("人员休息存在溢出");
}
Random random = new Random();
Set<Integer> set = new HashSet<>();
int flag = 1;
while (flag <= (day-myCount)) {
int ra = random.nextInt(day) + 1;// 这里有day
boolean add = set.add(ra);
if (add) {
flag++;
}
}
System.out.println("set集合" + set);
// 添加和set集合判断
// 里面有200人 lists
ArrayList<Integer> listmin = new ArrayList<>();
int coun = 1;
for (int i = 0; i < lists.size(); i++) {// 遍历人数
if (set.size() == 0) {
if (listmin.size() == (reultPerson)) {
System.out.println(coun + "=" + listmin);
listmin = new ArrayList<>();
coun++;
}
} else {
for (Integer ss : set) {
if (coun == ss && listmin.size() == reultPerson) {
System.out.println(coun + "=" + listmin);
listmin = new ArrayList<>();
coun++;
} else if (listmin.size() == (reultPerson+1)) {
System.out.println(coun + "=" + listmin);
listmin = new ArrayList<>();
coun++;
}
}
}
listmin.add(lists.get(i));
}
System.out.println(coun + "=" + listmin);
}
}