我需要创建最接近目标值的值的组合。组合必须是 x 个数字,其中 x 由用户定义。该算法将输出最接近用户输入的目标值的组合。我还需要显示算法返回的键(值)。
以下是我认为该算法的工作方式:
Target: 575
具有相应键的值:
150 [0] | 75 [1] | 123 [2] | 212 [3] | 23 [4] | 89 [5] | 20 [6]
77 [7] | 39 [8] | 16 [9] | 347 [10] | 512 [11] | 175 [12]
用户想要Groups of: 5 values
该算法现在在整个集合上运行 5 个值之和的组合,并返回最接近目标值的值之和575
。
结果
150 [0] + 212 [3] + 23 [4] + 77 [7] + 89 [5] = 551
使用的键是 0、3、4、7 和 5。
我可以使用Arrays#combination(n)
,但我将无法跟踪密钥。我已经能够想出一个存储“key”=>“int values”的哈希,但我不知道如何想出一个优化的算法来组合存储在哈希中的值。
{0=>"150"}
{1=>"212"}
{2=>"23"}
{3=>"77"}
{4=>"89"}
PS这不是作业。这是一个个人项目,可以放在简历上,在面试中谈论,并学习将我的想法转化为代码。