从列表中收集2的所有可能组合

本文关键字:有可能 组合 列表 | 更新日期: 2023-09-27 18:16:14

我有一个包含10个项目的列表。我正在尝试向控制台输出每对可能的2。但它不能与自己配对。例如1,21,31,4等…

我找到这个是为了在一个列表中找到所有可能的组合。有人能帮我修改一下吗?

    private static void GetCombination(IList list)
    {
        var count = Math.Pow(2, list.Count);
        for (var i = 1; i <= count - 1; i++)
        {
            var str = Convert.ToString(i, 2).PadLeft(list.Count, '0');
            for (var j = 0; j < str.Length; j++)
            {
                if (str[j] == '1')
                {
                    Console.Write(list[j]);
                }
            }
            Console.WriteLine();
        }
    }

从列表中收集2的所有可能组合

因此,如果您有一个包含1到10的列表,则需要1,2 1,3 1,4。。。1,10-2,1 2,3。。CCD_ 7等。你只需要使用bubble并检查第一个索引和第二个索引是否不同。

为了进一步澄清,这里有一个例子:

List<int> mylist = new List<int>(new int[] { 1,2,3,4,5,6,7,8,9 });
GetCombination(mylist);

private static void GetCombination(IList<int> values)
{
    for (int i = 0; i < values.Count; i++)
    {
        for (int j = 0; j < values.Count; j++)
        {
            if (i != j)
            {
                Console.WriteLine(values[i] + " " + values[j]);
            }
        }
    }
}

这是一个非常简单的问题。添加到@FirstOne的答案您还可以从函数返回包含所有组合的列表:List mylist=new List(new int[]{1,2,3,4,5,6,7,8,9}(;GetCombination(mylist(;

    public static IList<Tuple<int,int>> GetCombination(IList<int> values)
    {
        List<Tuple<int,int>> _temp=new List<Tuple<int, int>>();
        for (int i = 0; i < values.Count; i++)
        {
            for (int j = 0; j < values.Count; j++)
            {
                if (i != j)
                {
                    _temp.Add(Tuple.Create(i, j));
                }
            }
        }
        return _temp;
    }