Function:
public static List<int[]> SumSet(int[] array)
{
List<int[]> result = new List<int[]>();
for (int i = 0; i < array.Length; i++)
{
int differ = -array[i];
for (int j = i + 1; j < array.Length; j++)
{
var a = array.Select((chr, index) => new { chr, index }).Where(chr=>chr.chr == differ - array[j]);
if (a.ToList().Count > 0)
{
int[] aa ={ array[i],array[j],a.ToList()[0].chr};
result.Add((aa.OrderBy(n => n)).ToArray());
}
}
}
HashSet<int[]> set = new HashSet<int[]>(result);
result.Clear();
result.AddRange(set);
return result;
}
控制台展示:
static void Main(string[] args)
{
{
Console.WriteLine("请输入数组:");
string ss = Console.ReadLine();
string[] str = ss.Split(',');
int[] arry=new int[str.Count()];
for (int i = 0; i < str.Count(); i++)
{
string sss = str[i];
arry[i] = Convert.ToInt32(sss);
}
Console.WriteLine("满足条件的组合有:");
List<int[]> result = SumSet(arry);
foreach (int[] ar in result)
{
foreach (int i in ar)
{
Console.Write(i);
}
Console.Write("_");
}
Console.ReadLine();
}
}
问题点:List<int> 去重复失败。。。。