C语言课程设计-保安值班系统
答案:1 悬赏:30 手机版
解决时间 2021-12-04 00:58
- 提问者网友:嘚啵嘚啵
- 2021-12-03 22:04
C语言课程设计-保安值班系统
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-12-03 22:35
这个像排列组合多点:
c:
#include
#include
#include
#include
char *week[7] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
char *names[7] = { "赵", "钱", "孙", "李", "周", "吴", "陈" };
int plan[7] = { -1 };
int planNum = 0;
void doPlan(int n, int*len, int accept[7][3]) {
if (n > 6) {
planNum++;
for (int i = 0; i < n; ++i) {
printf(" %s ", names[plan[i]]);
}
printf("
");
} else {
for (int i = 0; i < len[n]; ++i) {
if (plan[accept[n][i]] >= 0) {
continue;
}
plan[accept[n][i]] = n;
doPlan(n + 1, len, accept);
plan[accept[n][i]] = -1;
}
}
}
int main() {
int len[7] = { 2, 2, 2, 1, 3, 2, 3 };//这里的数字对应 accept[i] 的长度
int accept[7][3] = { { 2, 4 }, { 1, 6 }, { 0, 3 }, { 5 }, { 1, 4, 6 }, { 2,
5 }, { 0, 3, 6 } };
for (int i = 0; i < 7; i++) {
printf("%s ", week[i]);
plan[i] = -1;
}
printf("
");
doPlan(0, len, accept);
printf("总共 %d 个方案
",planNum);
return 0;
}
c:
#include
#include
#include
#include
char *week[7] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
char *names[7] = { "赵", "钱", "孙", "李", "周", "吴", "陈" };
int plan[7] = { -1 };
int planNum = 0;
void doPlan(int n, int*len, int accept[7][3]) {
if (n > 6) {
planNum++;
for (int i = 0; i < n; ++i) {
printf(" %s ", names[plan[i]]);
}
printf("
");
} else {
for (int i = 0; i < len[n]; ++i) {
if (plan[accept[n][i]] >= 0) {
continue;
}
plan[accept[n][i]] = n;
doPlan(n + 1, len, accept);
plan[accept[n][i]] = -1;
}
}
}
int main() {
int len[7] = { 2, 2, 2, 1, 3, 2, 3 };//这里的数字对应 accept[i] 的长度
int accept[7][3] = { { 2, 4 }, { 1, 6 }, { 0, 3 }, { 5 }, { 1, 4, 6 }, { 2,
5 }, { 0, 3, 6 } };
for (int i = 0; i < 7; i++) {
printf("%s ", week[i]);
plan[i] = -1;
}
printf("
");
doPlan(0, len, accept);
printf("总共 %d 个方案
",planNum);
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯