gpt4 book ai didi

java - 我如何为访问 n 个教会的 n 个牧师制定时间表?

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:22 24 4
gpt4 key购买 nike

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

  1. 每个月,每个牧师必须去另一个教会,
  2. 牧师不能去他来的同一个教堂
  3. 1 年内他必须去 12 个不同的教堂
  4. 有13个教会和13个牧师,每个教会每个月只接受1个牧师

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

我想让他去同一个教堂的可能性很小(大约 3% 或更少)。

最佳答案

您的条件不需要随机选择给定牧师的下一个教堂。您不能只遍历教堂列表吗?

也就是说,给每个牧师分配一个数字,0-12。为每个教堂分配一个编号,0-12。第一个月:

Month 0:
pastor-0 --> church-0
pastor-1 --> church-1
pastor-2 --> church-2
...
pastor-n --> church-n

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

Month 1:
pastor-0 --> church-1
pastor-1 --> church-2
pastor-2 --> church-3
...
pastor-n --> church-0

然后对剩余的月份重复:

Month 3:
pastor-0 --> church-2
pastor-1 --> church-3
pastor-2 --> church-4
...
pastor-(n-1) --> church-0
pastor-n --> church-1

所有这些都有一个非常简单的循环 (O(n))。如果这让您感到困惑,我建议您尝试在纸上使用 n=3 来循环。

如果需要随机性,请更新您的问题。

按人数编辑

我正在删除我的答案并赞成这个答案,因为它是 O(n),而我的扩展以满足编辑的需要至少是 O(n^2)。

通过将 pastor-0 到 pastor-N 值索引到已随机排序的牧师数组中,您仍然可以具有随机性,因此至少与我的解决方案一样好。

结束按 PAX 编辑

关于java - 我如何为访问 n 个教会的 n 个牧师制定时间表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/330685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com