我正在开发一个应用程序,该应用程序需要根据各种标准匹配两组数据,包括每组中任意数量的项目的总和。我已将问题提炼为以下陈述:
给定一组项目和交易,找到总和等于最小交易集总和的最小项目集。(我忽略了这篇文章的一些复杂性,但现在我只关心匹配的总金额,而不是日期、描述、清算差异等)
或者,在数学上:给定两组数字,从每组中找出总和相等的最小集合。
我遇到的其他类似的 SO 问题假设您提前知道总和,或者知道您要购买的每组的数量。
这是一个测试,(我认为)说明了我的目标。
[TestMethod]
public void StackOverflowTest()
{
var seta = new[]{10, 20, 30, 40, 50};
var setb = new[]{ 45, 45, 100, 200 };
var result = Magic(seta, setb);
Assert.AreEqual(new[]{40,50},result.SetA);
Assert.AreEqual(new[] { 45, 45 }, result.SetB);
}
class MagicResult
{
public int[] SetA { get; set; }
public int[] SetB { get; set; }
}
private MagicResult Magic(int[] seta, int[] setb)
{
throw new NotImplementedException();
}
我正在寻找一个优雅的解决方案,可以通过,但会接受任何让我到达那里的伪代码或建议;)