如何从递归函数中排除重复元素子集求和问题

问题描述

我试图从一组数字中得到一个组合,其总和等于给定的数字。我正在使用递归函数来这样做,但是,我得到了很多重复的选项。下面是函数和结果

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;
         }
       }
    }
  }
}

结果

enter image description here

如您所见,元素一和二是相同的,但编号顺序不同。有没有办法只包含一个这样的选项并排除其他类似的选项?

任何帮助将不胜感激,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)