我正在尝试用强力解决weighted job scheduling问题。
这是我尝试过的。
const solution = jobs => {
let maxWeight = 0;
for (let i = 0; i < jobs.length; i++) {
const endTime = jobs[i][1];
const weight = jobs[i][2];
const filteredJobs = jobs.filter(
(job, index) => job[0] >= endTime);
const returnedWeight = solution(filteredJobs);
if (returnedWeight > maxWeight) {
maxWeight = returnedWeight;
}
return weight + maxWeight;
}
return maxWeight;
};
我用来测试我的解决方案的输入是[[1、2、50],[3、5、20],[6、19、100],[2、100、200]。当我执行程序时,它将返回我170,即执行顺序为1-> 2-> 3。但是,按1-> 4的顺序执行时,预期输出为250。
有人可以指出我的错误吗?
答案 0 :(得分:3)
您的循环for (let i = 0; i < jobs.length; i++) {
仅在i = 0时运行,就像您以后进行的return weight + maxWeight;
一样。不知道为什么要这么做,我想你打算这么做
if (returnedWeight + weight > maxWeight) {
maxWeight = returnedWeight + weight;
}