【问题标题】:Generate all combinations of values that are less than array's elements and have a sum = target生成小于数组元素且总和 = 目标的所有值组合
【发布时间】:2019-09-09 20:34:03
【问题描述】:

我想找到一种方法来生成包含总和为某个目标的元素的集合。最初,我有一个数组,其中包含表示可以存储在该索引中的最大值的元素。

例如,输入是 [8,6,1],目标是 10。算法应该生成所有包含元素 [ (

此算法的一个主要考虑因素是它应该适用于任何输入长度(上面的示例的长度为 3)。

我认为解决方案接近子集和问题,但我无法弄清楚。任何帮助表示赞赏。

旁注:首选python代码,但伪代码应该没问题。

谢谢

【问题讨论】:

  • 到目前为止你尝试过什么?向我们展示您的代码!
  • @KlausD。这与代码无关。我很难找到这背后的逻辑。一旦我理解了逻辑,我就可以编写代码。不过还是谢谢。
  • 这里是关于你的代码和你的参与。不付出任何努力就放弃任务是不被接受的。
  • 如果您的问题确实是关于算法而不是代码,那么对于 Computer ScienceMathematics 堆栈站点来说可能是一个更好的问题
  • 谢谢@KlausD。会记住这一点。对不起,这里是新的:/

标签: python sum subset combinations


【解决方案1】:

这是一个非常幼稚的解决方案。

def set_of_sums(inputs, target):
    list_of_answers = []
    for i in range(0, inputs[0] + 1):
        for j in range(0, inputs[1] + 1):
            for k in range(0, inputs[2] + 1):
                if (i + j + k) == target:
                    temp = []
                    temp.append(i)
                    temp.append(j)
                    temp.append(k)
                    list_of_answers.append((temp))
    return list_of_answers


print(set_of_sums([8,6,1] ,10))

【讨论】:

  • 非常感谢。我忘了在问题中提到,有没有办法让它适用于任何输入的长度?
  • 您需要将其调整为递归函数,该函数从目标中减去 for 循环中的第一个值。这要复杂得多。
猜你喜欢
  • 2011-09-05
  • 1970-01-01
  • 2021-12-06
  • 2019-08-06
  • 2022-12-20
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多