回溯问题(我想?) - Javascript

时间:2017-04-23 15:35:23

标签: javascript backtracking

我喜欢挑战自己只是为了好玩而且我遇到了一个我自己无法解决的问题。我尝试过并试过,但我找不到解决方案,这就是我来这里问你的原因。

因此,我们假设我们有三个不同的数组:

var y1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
var y2 = [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ];
var y3 = [ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 ];

我们还有五个不同的整数:

var z1 = 200;
var z2 = 400;
var z3 = 600;
var z4 = 800;
var z5 = 1000;

当公式看起来像这样时,我怎么能看到最大的数字:

x = z1*y1[0] + z2*y1[0] + z3*y2[0] + z4*y2[0] * z5*y3[0];

...我只有25分用于替换等式中的零点?

  

例如:

     

z1 * y1 [5] + z2 * y1 [5] + z3 * y2 [5] + z4 * y2 [5] * z5 * y3 [5] = 32000(5 + 5 + 5 + 5 + 5 = 25)

     

z1 * y1 [0] + z2 * y1 [10] + z3 * y2 [0] + z4 * y2 [10] * z5 * y3 [5] = 35000(0 + 10 + 0 + 10 + 5 = 25)

我想我知道应该怎么做(回溯?)但我无法弄清楚如何完成它。我也无法从互联网上找到这种类型的问题,所以如果你知道在哪里看起来也会很棒,因为我没有找到直接答案,我想要学习。

所以任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

您可以将其视为有五台机器(m)需要执行一项工作(n),处理时间不同(z),y表示何时安排每项工作。

假设提升启发式:

max(25) = z1*y1[0] + z2*y1[0] + z3*y2[5] + z4*y2[10] * z5*y3[10] Result: 480006000