值班算法

jmqnwpu 2018-03-22 12:33:28
每个星期安排七个人值班a、b、c、d、e、f、g
其中1、a、b每个月只值班4次
2、 7个人轮询值班,举例这周值班顺序为abcdeg,下周就应该是bcdefga,再下周就是cdefgab
3、要求输入数据为年,输出为按日历排版的人员表。
...全文
1901 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyfhz 2018-05-15
  • 打赏
  • 举报
回复
可以反过来找啊,直接先按照1234567,2345671,....这样的方式打印一遍年历,然后从1~7中依次查找两个每个月最多只出现4次的元素(比方说找出来是3和5),于是指定3=a, 5=b,然后其它元素随意分配就可以了。
  • 打赏
  • 举报
回复
引用 8 楼 leavesguth 的回复:
循环中a、b分别计数达到四次,且月数不变时,扣除a或b后按照剩余的人数继续循环,如果月数增加了,就全部清零继续剩余的循环,到最后一个G的时候,再加上a或b项。 确实太麻烦了,跳来跳去的。
7个人轮询值班,举例这周值班顺序为abcdeg,下周就应该是bcdefga,再下周就是cdefgab
sixgj 2018-04-02
  • 打赏
  • 举报
回复
一看AB是特殊人物 有特权。
秋天之落叶 2018-03-30
  • 打赏
  • 举报
回复
记得很早以前接触过编程的程序是一个打印年历表,把这个小程序翻出来,然后把周一到周日看成是a-g,在循环中加一个周一和周二的判断,如果在同一个月内累计到了4次,就跳过去开始执行小循环,即周三开始循环,判断月份的变化,直到月份增加时,计数清零。
秋天之落叶 2018-03-30
  • 打赏
  • 举报
回复
循环中a、b分别计数达到四次,且月数不变时,扣除a或b后按照剩余的人数继续循环,如果月数增加了,就全部清零继续剩余的循环,到最后一个G的时候,再加上a或b项。 确实太麻烦了,跳来跳去的。
秋天之落叶 2018-03-30
  • 打赏
  • 举报
回复
感觉没问题,“a、b每个月只值班4次”,循环中a、b分别计数达到四次,且月数不变时,扣除a或b后按照剩余的人数继续循环,如果月数增加了,就全部清零继续循环。 逻辑判断太麻烦,懒得写代码了。
  • 打赏
  • 举报
回复
按楼主的要求2,a、b的值班日期不是固定的周一周二,是循环的,也就是49天之内abcdefg每人都在周一到周日各值班一天。
浪子家园 2018-03-29
  • 打赏
  • 举报
回复
你这是排班算法,有点复杂了。。。。
  • 打赏
  • 举报
回复
写了个小程序测试,是无解的,也可能我对楼主的问题理解有误。
lyhoo163 2018-03-23
  • 打赏
  • 举报
回复
这要使用深度搜索算法。
  • 打赏
  • 举报
回复
循环7种顺序排好一年,逐月检测是否符合要求即可。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧