问题描述
我试图从一组数字中得到一个组合,其总和等于给定的数字。我正在使用递归函数来这样做,但是,我得到了很多重复的选项。下面是函数和结果
foreach (string s in GetCombinations(set,Length,""))
{
tempresult.Add(s);
}
private IEnumerable<string> GetCombinations(int[] set,int sum,string values)
{
for (int i = 0; i < set.Length; i++)
{
int left = sum - set[i];
string vals = set[i] + "," + values;
if (left == 0)
{
yield return vals;
}
else
{
int[] possible = set.Where(n=>n<=sum).ToArray();
if (possible.Length > 0)
{
foreach (string s in GetCombinations(possible,left,vals))
{
yield return s;
}
}
}
}
}
结果
如您所见,元素一和二是相同的,但编号顺序不同。有没有办法只包含一个这样的选项并排除其他类似的选项?
任何帮助将不胜感激,谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)