问题陈述:有 5 个项目和 15 名员工,每列的数字表示每个员工对给定项目的兴趣。每个项目最多可以有 3 名员工。分数是从 1-5 1 是最高偏好,5 是最低偏好。我必须以最少的人不满意或最低分数的方式在项目中分配员工。请注意,我的算法创建了所有可能的组合,然后用 sum 升序对这些组合进行排序,并挑选出具有不同员工的前 5 个组合。
但这就是问题所在,例如,我的 sortedsum 矩阵是 [1,1,1,4,9,9,...] 现在这在算法上是正确的,但问题是如果我选择其中的前 5 个我的总和将是 16。但是如果我将 [2,1,1,4] 作为前四个,那么第五个项目团队的总和可能会代替 [1,1,1,4,9]到 3,这样最小值就会改变,这就是我的算法失败的地方。
我有一个 3nXn 矩阵,在本例中,我将其视为 15x5:所以矩阵看起来像这样(https://i.stack.imgur.com/omcq7.png):
df = pd.read_csv(io.StringIO("""
employee proj_A proj_B proj_C proj_D proj_E
A1 1 5 3 4 2
B1 5 4 1 2 3
C1 2 3 4 1 5
A2 4 2 1 3 5
B2 4 5 3 2 1
C2 3 1 2 5 4
A3 1 …Run Code Online (Sandbox Code Playgroud)