- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
每天有一个任务需要两个人执行,并且有一个团队可用。
我们的想法是将每个可能的组合至少分配一次的方式分配给两个不同的人。
此外,理想情况下,任何特定人员的分配时间应尽可能远离前一天分配的时间。
示例:
给定团队:A、B、C、D、E、F
任务的时间表可以是:
Day 1 = A, D
Day 2 = B, E
Day 3 = C, F
Day 4 = A, E
Day 5 = B, F
Day 6 = C, D
Day 7 = A, F
Day 8 = B, D
Day 9 = C, E
Day 10 = E, D
Day 11 = B, E
Day 12 = C, A
...
请注意,同一个字母与上一次的分配有一定的距离。例如,A 被分配到第 1、4、7、12 天,D 被分配到第 1、6、8、10 天。另请注意,所有可能的组合都存在。
目前,我可以为小型团队(6 到 8 人)“手动”组合和排序配对,但对于更大的团队,我无法想出一种算法。
是否有算法可以帮助我?
奖励积分:
在任何时候,一个人都可能变得“不活跃”,因此应该按照规则由其他人代替。
非常感谢!
最佳答案
在Wikipedia 上描述了以下循环调度算法解决了您问题的非奖金部分。这个想法是像这样配对
0 1 2 3 4
5 6 7 8 9
获取对 05 16 27 38 49
,然后顺时针旋转除 0
之外的所有内容
0 5 1 2 3
6 7 8 9 4
得到对06 57 18 29 34
,然后重复
0 6 5 1 2
7 8 9 4 3
等尽管该算法是为并行循环赛设计的,但它恰好具有这样的特性:由于顺时针旋转不会将任何元素水平移动太远,因此每个特定数字出现之间的间隔相当一致。
为了回答您的附加问题,我建议您尝试使用本地搜索——随机中断不可能让任何提前组合解决方案正常工作。
关于安排人们参加应成对进行的事件的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896889/
很荣幸本周六被邀请到百度“英雄汇”移动开发者沙龙,在此次会议中,看到不少的大牛分享不错的干货,今天把我在会议中所听到的内容给大家分享一下。 数据价值 看起来就是广告的会议,其实也给我们统计出很多
我试图部分消耗Kotlin中的序列,以将其拆分。 fun main() { val seq = listOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9).asSequence(
我正在处理一个查询,试图找出您当前的连续出勤记录。所以换句话说,人 1 参加了最后 5 场事件,人 2 参加了最后 6 场事件,等等。我为此获得的数据文件非常简单: Event Number - Un
我找不到只参与 rdd 的方法. take看起来很有希望,但它返回 list而不是 rdd .我当然可以将其转换为 rdd ,但这似乎既浪费又丑陋。 my_rdd = sc.textFile("my
我目前正在从事学术目的的自然语言处理工作,我想获取 Microsoft Research Sentence Completion Challenge 数据集。 不幸的是,它似乎不再可用 on Micr
我正在尝试让所有参加特定 Activity 的 Facebook 好友。 select uid, rsvp_status from event_member where uid IN (SELECT
我们的任务是编写一段代码来猜测 0 到 100 之间的一个 secret 数字。这是我的一段代码: low = 0 mid = 50 high = 100 secretnum = "Is your s
下学期我将使用我的 MacBook Pro 参加基于 Python 的计算机科学类(class)。它将以定制设计为中心 package对于这个类。问题是这个软件包是由 Microsoft Resear
我是一名优秀的程序员,十分优秀!