尝试所有排列

时间:2010-05-12 15:49:24

标签: c# .net-3.5 permutation

对于我的程序,我正在努力帮助用户,并减少他或她的工作量。

有四个输入数字。他们也可以使用不确定数量的数字。

例如,它们的四个输入数字可以是{4,7,3,2},它们可以应用的数字是{4,9,23}

结果应该是:4(输入)应用于4,使集合看起来像:{0,7,3,2}然后7,2(输入)应用于9,使集合看起来像: {0,0,3,0}和{0,0,23}因为3或任何其他排列(包括3)与23不匹配,3仍然存在。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您是说要从输入集中找到与另一组中的值相加的项? 如果是这样,那么我相信这是Subset Sum Problem的一个实例,这是Knapsack Problem的一个特例。

子集总和是NP完全的。如果这些集很大,那么你能做的最好就是近似解决方案。