C# - 迭代所有可能的数组内容的成对组合

时间:2013-09-18 02:46:20

标签: c# arrays combinations

如果我有一个C#对象数组并希望迭代所有成对组合,那么最好如何实现?为:

int[] list = new int[3] {100, 200, 300};

这看起来像是:

100, 200
100, 300
200, 300

显然,我想要一个可以采用任意大小数组的函数,最好是通用的,这样任何对象类型都可以工作。

3 个答案:

答案 0 :(得分:4)

试试这个:

public static IList<Tuple<T,T>> GetPairs<T>(IList<T> list)    
{
    IList<Tuple<T,T>> res = new List<Tuple<T,T>>();
    for (int i = 0; i < list.Count(); i++)
    {
        for (int j = i + 1; j < list.Count(); j++)
        {
            res.Add(new Tuple<T, T>(list[i], list[j]));
        }
    }
    return res;
}

答案 1 :(得分:2)

int[] input = new int[] {100, 200, 300};

List<int[]> result = new List<int[]>();

for(int i=0; i<input.Length-1; i++)
{
    for(int j=i+1; j<input.Length; j++)
    {
        result.Add(new int[]{input[i], input[j]});
    }
}

答案 2 :(得分:-1)

int[] arr = { 800, 11, 50, 771, 649, 770, 240, 9 };      

        for (int i = 0; i < arr.Length; i++)
        {
            for (int j= i; j< arr.Length; j++)
            {
    if(i!=j)


                    //Console.Write(arr[i] + " " + arr[j]);
Console.WriteLine(arr[i] + " " + arr[j]);

            }
        }

您可以使用对象类型代替'int'。然后你需要继续检查。