C语言 蓝桥杯决赛排日程
来源:互联网 发布:级域名泛解析多久生效 编辑:程序博客网 时间:2024/04/27 09:08
某保密单位机要人员 A,B,C,D,E 每周需要工作5天,休息2天。
上级要求每个人每周的工作日和休息日安排必须是固定的,不能在周间变更。
此外,由于工作需要,还有如下要求:
1. 所有人的连续工作日不能多于3天(注意:周日连到下周一也是连续)。
2. 一周中,至少有3天所有人都是上班的。
3. 任何一天,必须保证 A B C D 中至少有2人上班。
4. B D E 在周日那天必须休息。
5. A E 周三必须上班。
6. A C 一周中必须至少有4天能见面(即同时上班)。
你的任务是:编写程序,列出ABCDE所有可能的一周排班情况。工作日记为1,休息日记为0
A B C D E 每人占用1行记录,从星期一开始。
【输入、输出格式要求】
程序没有输入,要求输出所有可能的方案。
每个方案是7x5的矩阵。只有1和0组成。
矩阵中的列表示星期几,从星期一开始。
矩阵的行分别表示A,B,C,D,E的作息时间表。
多个矩阵间用空行分隔开。
例如,如下的矩阵就是一个合格的解。请编程输出所有解(多个解的前后顺序不重要)。
0110111
1101110
0110111
1101110
1110110
#include <stdio.h>//每人工作安排只有七种情况void Assignment(int *a, int i){switch (i){case 1:a[0] = 0; a[1] = 1; a[2] = 1; a[3] = 0; a[4] = 1; a[5] = 1; a[6] = 1;break;case 2:a[0] = 0; a[1] = 1; a[2] = 1; a[3] = 1; a[4] = 0; a[5] = 1; a[6] = 1;break;case 3:a[0] = 1; a[1] = 1; a[2] = 0; a[3] = 1; a[4] = 1; a[5] = 1; a[6] = 0;break;case 4:a[0] = 1; a[1] = 1; a[2] = 1; a[3] = 0; a[4] = 1; a[5] = 1; a[6] = 0;break;case 5:a[0] = 1; a[1] = 0; a[2] = 1; a[3] = 1; a[4] = 1; a[5] = 0; a[6] = 1;break;case 6:a[0] = 1; a[1] = 0; a[2] = 1; a[3] = 1; a[4] = 0; a[5] = 1; a[6] = 1;break;case 7:a[0] = 1; a[1] = 1; a[2] = 0; a[3] = 1; a[4] = 1; a[5] = 0; a[6] = 1;break;}}int main(){int a[5][7], i, j, k, l, m, x, y, n, q;for (i = 1; i <= 7; i++){Assignment(a[0], i);for (j = 1; j <= 7; j++){Assignment(a[1], j);for (k = 1; k <= 7; k++){Assignment(a[2], k);for (l = 1; l <= 7; l++){Assignment(a[3], l);for (m = 1; m <= 7; m++){Assignment(a[4], m);x = 0; y = 0;//A,E周三必须上班;B,D,E周日必须休息if (a[0][2] == 1 && a[4][2] == 1 && a[1][6] == 0 && a[3][6] == 0 && a[4][6] ==0)for (n = 0; n < 7; n++){//任何一天,必须保证ABCD中至少两人上班if (a[0][n] + a[1][n] + a[2][n] + a[3][n] < 2)break;//一周中,至少有3天所有人都是上班的if (a[0][n] == 1 && a[1][n] == 1 && a[2][n] == 1 && a[3][n] == 1 && a[4][n] == 1)x++;//A C一周中必须至少有四天能见面(同时上班)if (a[0][n] == 1 && a[2][n] == 1)y++;}if (x >= 3 && y >= 4){for (q = 0; q < 5; q++){for (n = 0; n < 7; n++)printf("%d", a[q][n]);putchar('\n');}putchar('\n');}}}}}}return 0;}
- C语言 蓝桥杯决赛排日程
- 蓝桥杯决赛之排日程
- 蓝桥杯-排日程
- [蓝桥杯]排日程
- 排日程
- 2014蓝桥杯C语言B组决赛
- C语言决赛代码
- 蓝桥杯 人员排日程 伪DFS
- 快排---C语言
- 第三届蓝桥杯决赛C语言组解析
- 快排 c语言实现
- C语言 快排函数
- C语言实现快排
- C语言快排实现
- 快排C语言实现
- C语言万年历(n排)
- 蓝桥杯—C语言B组 第七届决赛题解:机器人塔
- 排日程 某保密单位机要人员 A,B,C,D,E 每周需要工作5天,休息2天。
- UVa 10192: Vacation
- 如何去掉CodeIgniter中URL里的index.php
- HDU 3474 Necklace 单调队列
- Nutch+Hadoop集群搭建
- Matlab大数据处理1:Matlab内存映射文件
- C语言 蓝桥杯决赛排日程
- wikioi p1048 石子归并
- c++ 输出流的疑惑(待解)
- 普通类实现枚举类
- csdn博客被一个无名网站套用,不知大家是否也是这样?
- wikioi p1154 能量项链
- Uva11997 优先级队列的应用 多路合并问题
- Objective-C ,ios,iphone开发基础:在UITextField输入完以后,隐藏键盘,
- Ubantu 使用disks工具全盘格式化之后数据恢复