algorithm - 根据两个特征将组分类为子组

标签 algorithm

我认为我有一个比较有用的解决方案,但真的很想知道是否有人有更好的方法。我也不确定如何正确定义我遇到的问题类型,这意味着我没有做过太多谷歌搜索。

问题: 我有未知数量的玩家正在为游戏选择角色。有效角色为 1-5。玩家必须选择主要角色,但他们也可以选择次要角色。他们的次要角色的选项是“无”、1-5 之一(不同于他们的主要角色)或“任何”。然后我必须将玩家分成 5 人一组,每个团队需要每个号码中的一个。目标是最大限度地增加正确组建的团队的数量。

我目前的解决方案: 将玩家分为 3 组:A)选择“无”作为次要的人,B)选择数字作为次要的人,C)选择“任何”作为次要的人

  • 用 A 组的球员填补团队,将他们作为主要角色。

  • 计算现有的非完整团队中剩余的空缺职位数量

  • 统计 B 组(主要和次要)所代表的角色数量

  • 根据空缺职位的数量,开始添加 B 组的球员 - 填补职位的顺序是从最大的赤字到最小的赤字,优先选择那些作为其他角色的球员的数字最大B组中的大小(按表示)

  • 用C组填空

如果情况变得更糟,我总是可以将人们分组,而不考虑他们喜欢的角色,但理想情况下我会创建正确的组。

最佳答案

主要和次要角色对团队平衡的影响是否相同?如果是这样,您可以从团队的角度以及每个团队当前角色/需求的状态来看待问题。

例如,A 队的第一个人可能同时是 1 和 3,所以 A 队有 1 和 3。A 队的下一个人在主要或次要角色中不应是 1 或 3 .使用剩余的团队需求(角色 2、4、5),您可以迭代可能的成员,直到 1) 团队已满/平衡或 2) 没有剩余的候选人。

还有更多的问题吗?我觉得我没有弄清楚整个问题。

关于algorithm - 根据两个特征将组分类为子组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33337537/

相关文章:

c - c中的递归顺序

algorithm - 修改硬币找零的伪多项式时间算法

algorithm - 想出一个算法

algorithm - 是否可以懒惰地生成轮子?

能否更高效地编写此图案打印算法?

algorithm - Codility 的卡特彼勒方法的实际名称是什么?

algorithm - 在矩阵中找到最大和 sub=rectangle

algorithm - 如何在恒定时间内找到格雷码中要更改的下一位?

java - 总结整数数组的最有效方法

java - 如何从包含另一个数组的所有元素的数组中获取所有可能的组合