Java中的SpringBoot项目中遇到的排班问题

img


如上图,我应该如何把图中的志愿者比如云三、段七等等随机分配给每一项志愿服务,简单点说,就是我要如何按星期几给每一个志愿服务分配人手(一个或者两个都可以),志愿服务和星期几是固定的,没有星期六和星期天,用的Java中的SpringBoot框架+mysql,求大神教教我,头一回遇到这种问题,脑瓜子嗡嗡的,想不出来,如有用必采纳!

基于Monster 组和GPT的调写:


// 定义一个包含志愿服务和星期几的表格
String[][] schedule = {
        {"人员隔离", "星期一", "星期二", "星期三", "星期四", "星期五"},
        {"核酸检测", "", "", "", "", ""},
        {"信息采集", "", "", "", "", ""},
        {"体温测量", "", "", "", "", ""},
        {"心理援助", "", "", "", "", ""}
};

// 定义一个包含所有志愿者的列表
List<String> volunteers = Arrays.asList("云一", "云二", "云三", "段七", "李四", "赵六");

// 对于每个志愿服务和星期几组合,随机选择一个或两个志愿者
for (int i = 1; i < schedule.length; i++) {
    for (int j = 1; j < schedule[i].length; j++) {
        if (!schedule[i][j].isEmpty()) {
            List<String> selectedVolunteers = new ArrayList<>();
            if (j % 2 == 0) {
                // 选择两个志愿者
                Collections.shuffle(volunteers);
                selectedVolunteers.add(volunteers.get(0));
                selectedVolunteers.add(volunteers.get(1));
                volunteers.remove(0);
                volunteers.remove(0);
            } else {
                // 选择一个志愿者
                Collections.shuffle(volunteers);
                selectedVolunteers.add(volunteers.get(0));
                volunteers.remove(0);
            }
            schedule[i][j] = String.join(",", selectedVolunteers);
        }
    }
}

// 打印结果
for (String[] row : schedule) {
    System.out.println(Arrays.toString(row));
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^