标题:80分求英雄相助。 挺贴!
只看楼主
y3765258
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:172
注 册:2013-4-9
结帖率:87.5%
已结贴  问题点数:80 回复次数:25 
80分求英雄相助。 挺贴!
某保密单位机要人员 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
用C语言编写
绝对不是为了作业,我想要得只是简单点得代码。要求不要使用位运算,或者标注下也行。
求好汉相助。
若能给出关键算法的注释,万分感谢。
搜索更多相关主题的帖子: 编写程序 工作日 休息日 
2013-04-26 10:56
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:0 
好! 重赏之下 必有勇夫

人生是一场错过 愿你别蹉跎
2013-04-26 11:18
tremere
Rank: 6Rank: 6
来 自:火星
等 级:侠之大者
帖 子:223
专家分:432
注 册:2013-3-11
得分:0 
啧啧,,菜鸟,来学习的说

极品菜鸟,来学习啦,啦啦啦啦啦啦啦。。。
2013-04-26 11:38
chenzhibin07
Rank: 2
等 级:论坛游民
帖 子:57
专家分:64
注 册:2013-4-10
得分:0 
学习路过。。。。
2013-04-26 14:33
y3765258
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:172
注 册:2013-4-9
得分:0 
回复 2楼 fanpengpeng
又一个熊猫的说。。

有问题一起探讨,一起进步。
2013-04-26 14:44
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
得分:0 
好奇大神的答案!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-04-26 14:59
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:0 
蹭分,等大神

三十年河东,三十年河西,莫欺少年穷!
2013-04-26 15:03
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
得分:0 
弄一个5维7列的数组,每一行分别是5个人的上班情况,数组元素0代表不上班,1代表上班,每一行的数组元素和是5,然后在穷举题目所说的条件(楼主看下题目说的条件能不能化简或推断出简单的判定条件),条件都符合的输出数组元素!具体代码我懒的写,楼主自己想想把。。。
2013-04-26 15:09
小小的C
Rank: 2
等 级:论坛游民
帖 子:31
专家分:22
注 册:2013-4-19
得分:0 
顶贴,求见识。

新手发言,勿怪。
2013-04-26 15:16
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:0 
如果的只能穷举的话 我的思路是下面这样的 (我比较期望非穷举的方法 因为那样能学到更多的东西 当然穷举也是算法啦)
首先 一个子方法 穷举所有C(7,2) 即7选2的所有组合 并排除出现超过3个连续1的情况 具体办法是 如果某一位选定为0 那么他的前、后、前前、后后不能再选为0(位置采用模7以首尾连续)
然后 递归穷举5个人的所有情况 对每一个情况判断
判断分两种
(4)(5)条件 直接判断指定位
(2)(3)(6) 要逐列判断 指定行上的1的个数是否满足要求

人生是一场错过 愿你别蹉跎
2013-04-26 15:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405566-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.778383 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved