我试图用暴力解决这个问题。
这就是我试过的。

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。
有人能指出我的错误吗?

最佳答案

你的循环只在i=0时运行,就像你以后所做的那样。我不知道你为什么要这么做

  if (returnedWeight + weight > maxWeight) {
    maxWeight = returnedWeight + weight;
  }

07-28 09:50