用c语言编写程序题目05:排班系统学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下: 钱:星期一、星期六赵:星期二、星期四 孙:星期三、星期日 李:星期五 周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日
时间: 2023-03-28 13:02:44 浏览: 190
好的,这是一个关于排班系统的问题,我可以回答。以下是用 C 语言编写程序的代码:
#include <stdio.h>
int main() {
char names[7][3] = {"钱", "赵", "孙", "李", "周", "吴", "陈"};
char days[7][4] = {"一", "二", "三", "四", "五", "六", "日"};
int schedule[7] = {, , , , , , }; // 表示未安排休息日,1 表示安排了休息日
int count = ; // 记录方案数
for (int i = ; i < 7; i++) { // 钱到陈依次选择休息日
schedule[i] = 1; // 先安排当前保安休息
for (int j = ; j < 7; j++) { // 遍历其它保安选择休息日
if (j != i) { // 不是当前保安
schedule[j] = 1; // 先安排当前保安休息
for (int k = ; k < 7; k++) { // 遍历其它保安选择休息日
if (k != i && k != j) { // 不是当前保安和上一个保安
schedule[k] = 1; // 先安排当前保安休息
for (int l = ; l < 7; l++) { // 遍历其它保安选择休息日
if (l != i && l != j && l != k) { // 不是当前保安和前两个保安
schedule[l] = 1; // 先安排当前保安休息
for (int m = ; m < 7; m++) { // 遍历其它保安选择休息日
if (m != i && m != j && m != k && m != l) { // 不是当前保安和前三个保安
schedule[m] = 1; // 先安排当前保安休息
for (int n = ; n < 7; n++) { // 遍历其它保安选择休息日
if (n != i && n != j && n != k && n != l && n != m) { // 不是当前保安和前四个保安
schedule[n] = 1; // 先安排当前保安休息
// 打印方案
printf("方案%d:\n", ++count);
for (int p = ; p < 7; p++) {
printf("%s休息日:%s\n", names[p], days[(p+i)%7]);
}
printf("\n");
schedule[n] = ; // 恢复当前保安的休息日安排
}
}
schedule[m] = ; // 恢复当前保安的休息日安排
}
}
schedule[l] = ; // 恢复当前保安的休息日安排
}
}
schedule[k] = ; // 恢复当前保安的休息日安排
}
}
schedule[j] = ; // 恢复当前保安的休息日安排
}
}
schedule[i] = ; // 恢复当前保安的休息日安排
}
return ;
}
这个程序会打印出所有可能的轮休方案,每个方案都包括每个保安的休息日。
阅读全文