javascript - 使用递归的加权作业调度

标签 javascript algorithm recursion job-scheduling recursive-backtracking

我正在尝试对 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。

谁能指出我的错误?

最佳答案

你的循环 for (let i = 0; i < jobs.length; i++) {只在 i = 0 时运行,就像你以后做的一样 return weight + maxWeight; .不确定你为什么有那条线,我猜你是故意的

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

关于javascript - 使用递归的加权作业调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52561791/

相关文章:

javascript - 在 NodeJS 中从 URL 获取图像并通过 POST 上传到另一个

python - 如何递归遍历树并在python中创建访问节点列表

c++ - 使递归在 C++ 中更高效

Golang中结构的递归函数

javascript - Protractor :在我的测试中正确使用 waitReady.js 文件

Javascript:用逗号分割字符串,括号内除外

c++ - Boost 有向图 : comparing edges of a vertex

java - 从二维数组中删除/删除重复项

java - 如何在 Java 中将字符组合成一个单词?

javascript - 自定义元素和 connectedCallback() : wait for parent node to be available before firing a function