首页 > 解决方案 > 从数组中选择一个随机元素,重复直到满足条件

问题描述

我有以下问题:我有一个固定的总和 [30] 和数字数组。我的问题是如何从 sum 中减去 num 的随机数,直到得到其余数 >1、<2,如 1.09 或 1.05?

var num= [0.99, 1.99, 2.99, 3.99, 4.99, 5.99, 6.99, 7.99, 8.99, 9.99];
var sum= [30];

控制台.log()

[30]

[0.99,
1.99,
0.99,
4.99,
6.99,
1.99,
2.99,
4.99
2.99]

[1.09]

console.log(再次)

[30]

[7.99,
6.99,
4.99,
6.99,
1.99,

[1.05]

标签: javascriptarrayssumfixed

解决方案


您需要在这里使用0/1 背包动态规划。这是标准的背包问题。

假设,您正在尝试第一个数字。您可以从总和中减去此数字或忽略此数字。所以你会尝试所有的可能性。这种取/不取称为0/1背包。

您可以从此链接学习0/1背包: https ://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/


推荐阅读