【问题标题】:Gather all possible combinations of 2 from a list从列表中收集 2 的所有可能组合
【发布时间】:2015-10-06 01:50:07
【问题描述】:

我有一个包含 10 个项目的列表。我正在尝试将 2 的所有可能配对输出到控制台。但它不能与自身配对。例如 1,2 1,3 1,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();
        }
    }

【问题讨论】:

  • 使用谷歌看看现在找到解决方案是多么容易..C# Bubble Sort
  • 我从来没有说过我不知道我发布的代码是做什么的。发布的代码是从列表对象中获取所有组合。我试图在 X 数量的配对中获得所有组合,即在 2 的配对中,所以输出将是.... 1,2 1,3, 1,10
  • 您的代码最初会给 var count = Math.Pow(2, list.Count); 一个计数值 1024.0 ,这与不重复值应该做的任何事情无关.. FirstOne 给了你一个需要添加 1 或 2 个的起点希望您能快速找出需要添加的内容

标签: c# .net


【解决方案1】:

所以如果你有一个从 1 到 10 的列表,你需要 1,2 1,3 1,4...1,10 - 2,1 2,3..2,10 等等。 您只需要使用气泡并检查第一个索引是否与第二个不同。

为了更清楚,这里是一个例子:

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

【讨论】:

  • @Andy 如果您觉得自己陷入了困境,请尝试将问题分解为多个步骤,甚至可以逐步进行。如果愿意,您可以调试。另一个技巧是弄清楚你必须做什么,而不管编程语言是什么,然后才是代码。反正。如果这是您正在寻找的答案,请不要忘记接受并投票。
【解决方案2】:

这是一个如此简单的问题。添加到@FirstOne 的答案中 您还可以从函数返回包含所有组合的列表: 列表 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;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2014-08-01
    相关资源
    最近更新 更多