【发布时间】:2012-10-18 17:03:10
【问题描述】:
我目前正在用 C# 创建一个程序,该程序将寻找两组数字的最小可能相等之和,您可以在其中重复这些数字任意多次。
例如,我有这两组{ 10, 13, 18 } 和{ 12, 16, 22 }。我能得到的最低金额是 28:(10 + 18) 和 (12 + 16)。
另一个例子是{5, 7, 9} 和{1, 2, 3}。最小可能的总和是 5:(5) 和 (1+1+1+1+1) 或 (1+2+2) 或 (2+3) 等等。
关于我可以从哪里开始的任何建议?我实际上每组将使用 6 个数字,并且数字在数百/数千标记内。
【问题讨论】:
-
提示:如果您能找到一种方法来为给定集合按升序生成所有可能的总和,您可以使用列表合并来找到两个集合共享的最小总和。
-
我不太确定如何以最少的代码工作量生成可能的总和。让我看看我能想出什么。
-
我也不是 100% 确定,但我认为生成每个排序的总和列表将涉及递归合并所有可能的总和列表,您可以通过将每个不同的元素添加到总和中来获得远。
-
谢谢,不知何故,根据你刚才所说的,我有了一个想法。
标签: math combinatorics