【发布时间】:2015-11-10 20:04:36
【问题描述】:
我目前正在尝试编写 C# 代码来查找多个整数数组,当它们相加时等于指定的总数。我想找到这些组合,同时给数组中的每个整数一个范围。
例如,如果我们的总数是 10,并且我们有一个大小为 3 的 int 数组,其中第一个数字可以介于 1 和 4 之间,第二个数字可以介于 1 和 4 之间,第三个数字可以介于 3 和 6 之间,那么一些可能的组合是 [1 , 3, 6], [2, 2, 6] 和 [4, 2, 4]。
什么样的算法可以帮助解决这样的问题,并且可以在它们最有效的时间内运行?另外,在将此问题转换为 C# 代码时,我还应该记住哪些其他事项?
【问题讨论】:
-
我会使用递归来做到这一点,但很可能这不是最佳解决方案。
-
here 描述的算法应该可以完美地用于基本组合生成器。对于生成输入和过滤输出, Enumerable.Range 和 Linq .Where 将是最简单的选项
-
如果我给你一个解释的解决方案,你可以吗?或者你不想让任何人帮助你?
-
无论如何都可以解释一下。
标签: c# arrays algorithm combinations