假设存在students[]
和ages[]
,subjectsFailed[]
和subjectsTaken[]
。假设每个学生的质量指数为subjectsFailed[i]/subjectsTaken[i]
。我需要选择学生,以便考虑到averageQualityIndex <= x
其中
averageQualityIndex = ∑subjectsFailed[k]/∑subjectsTaken[k]
,其中k是所选的学生。
在正常的背包问题中,权重是独立的。但是,在这种情况下,平均体重将取决于到目前为止选择的学生人数及其各自的体重。有没有办法可以用背包解决这个问题(最好的解决方案),或者有其他方法可以解决这个问题(如果可以的话,那是什么方法?)。
答案 0 :(得分:2)
您要满足约束{
"spec_dir": "bin/test",
"spec_files": [
"**/*[sS]pec.js"
],
"stopSpecOnExpectationFailure": false,
"random": false
}
。
将∑subjectsFailed[k]/∑subjectsTaken[k] <= x
乘以两边,就变成∑subjectsTaken[k]
。
重新排列我们发现∑subjectsFailed[k] <= x.∑subjectsTaken[k]
或∑(subjectsFailed[k]-x.subjectsTaken[k]) <= 0
,其中∑weights[k] <= 0
。
因此,按照这种权重定义,它又成为背包问题。