Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/math/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 求两组数的最小公共等和及组合_Math_Combinatorics - Fatal编程技术网

Math 求两组数的最小公共等和及组合

Math 求两组数的最小公共等和及组合,math,combinatorics,Math,Combinatorics,我目前正在用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个数字,这些数字是成百上千的。维护两个集合,从输入集合初始化,并按递增的数

我目前正在用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%确定,但我认为生成每个排序的总和列表将涉及递归地合并所有可能的总和列表,你可以通过将每个不同的元素添加到总和中来获得。谢谢,不知怎的,我根据你刚才说的得到了一个想法。谢谢,让我来研究一下如何执行你的建议。我可以做一些迭代来得到总数。List.Intersect()可以快速跟踪是否有公共和。谢谢你的提示。