从列表中收集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();
}
}
因此,如果您有一个包含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;
}