1

我在编程方面相当新,所以我希望有人能够在这方面为我指出正确的方向。

我有一个约 2400 人的列表,每个人至少有 23 个条件中的一个(如果他们有条件,每个人的条件是 1,如果没有,则为 0)。

EG 如果 Jon 有条件 1、5 和 6,Jon 的输出将是 {1,0,0,0,1,1,0,0...}。

然后,我将获得一份列表,列出每种条件需要多少人。因此,如果条件 1 的期望人数是 10 人,而条件 2 的期望人数是 5 人,我想要 10 人有条件 1 和 5 人有条件 2(如果两个人都有,一个人可以计入条件 1 和条件 2) .

此外,我必须准确选择 30 人,并尽量接近所需的条件数量,严格限制单个条件必须至少有 3 人且不超过 10 人。

有没有办法可以做到这一点,如果可以,我将如何去做?我尝试过暴力破解,但是大量的组合使我无法获得解决方案。

编辑:这是一个包含 5 个人和 4 个条件的小示例:

Person 1: {1,0,0,1} Person 2: {0,1,1,1} Person 3: {0,0,0,1} Person 4: {1,0,0,0} Person 5: {1,0,0,1}

所需的条件数 {2,1,1,2}。这个想法是我需要选择 3 个人并尽可能接近所需的条件数量。在此示例中,将选择人员 1、2 和 4。我必须将这个想法扩展到具有 23 个条件并选择 30 人的 2400 人列表(尽管它应该能够扩展到任何列表大小和任意数量的条件)并且不知道是否有 30 个成员的组合这将导致完全匹配。

这有助于澄清事情吗?

4

1 回答 1

0
于 2018-01-05T03:08:26.383 回答