当前位置:  开发笔记 > 编程语言 > 正文

如何为访问n-churches的n-pastors创建一个时间表?

如何解决《如何为访问n-churches的n-pastors创建一个时间表?》经验,为你挑选了1个好方法。

我想为许多牧师制定一份时间表.条件是:

    每个月,每个牧师都必须去另一个教堂,

    牧师不得去他所来的同一个教堂

    在1年内,他必须去12个不同的教堂

    有13个教堂和13个牧师,每个教堂每个月只接受1个牧师

我不能随意使用(1到12),因为牧师有可能去同一个教堂(有机会他去同一个教堂的可能性为8.3%).

我想让他去同一个教堂的机会很小(约3%或更少).



1> Michael Hare..:

你的条件不要求随机选择下一个教会给定牧师.难道你不能遍历教堂名单吗?

也就是说,为每个牧师分配一个0-12的数字.为每个教会分配一个0-12的数字.第一个月:

第0个月:
牧师-0->教堂-0
牧师-1->教堂-1
牧师2 - >教堂2
...
牧师n - >教堂-n

下个月,只需增加一个计数器(带环绕)

第1个月:
牧师0 - >教堂1
牧师1 - >教堂2
牧师2 - >教堂3
...
牧师 - n - >教堂-0

然后重复剩下的几个月:

第3个月:
牧师 -0- >教堂2
牧师1 - >教堂3
牧师2 - >教堂4
... 牧师 -
(n-1) - >教堂-0
牧师-n- - >教堂-1

所有这一切都有一个非常简单的循环(O(n)).如果它让你感到困惑,我建议用n = 3来试试纸上的循环.

如果要求随机性,请更新您的问题.

由PAX编辑

我正在删除我的答案并对此进行投票,因为它是O(n)并且我的扩展以满足编辑的要求至少为O(n ^ 2).

你仍然可以通过将pastor-0到pastor-N值索引变成一个随机排序的牧师数组,使得这个解决方案至少和我的一样好.

由PAX结束编辑

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有