【发布时间】:2012-12-21 10:16:05
【问题描述】:
我有一个数组,它的长度是X。数组的每个元素都有范围1 .. L。我想有效地遍历所有具有 sum L 的数组组合。
正确解:L = 4 和 X = 2
1 3
3 1
2 2
正确解:L = 5 和 X = 3
1 1 3
1 3 1
3 1 1
1 2 2
2 1 2
2 2 1
对于我的问题来说,天真的实现(难怪)太慢了(在我的例子中,X 最高为 8,L 最高为 128)。
谁能告诉我这个问题是怎么命名的,或者在哪里可以找到解决这个问题的快速算法?
谢谢!
【问题讨论】:
-
在我看来,您好像在寻找长度为
X的L的 整数分区。 -
你不能有效地(在文献中,效率=多项式)。有指数级的解决方案,并且迭代所有这些需要指数级的时间。
-
这将是一个很棒的项目欧拉问题 =)
-
我发现您的示例令人困惑,因为您没有提供输入数组。还是当您说“每个元素的范围为 1 .. L”时,您实际上是指“元素 i 等于 i”? (在这种情况下,为什么要提到数组?)
标签: algorithm