如何在两个集合中找到List的所有组合
本文关键字:List 组合 集合 两个 | 更新日期: 2023-09-27 18:10:30
我已经试过了,但我没有找到很多我想要完成的事情。
假设我有一个大约有50个数字的List<int>
List<int> _myList = new List<int>();
for (int i = 0; i < 49; i++)
{
_myList.Add(i);
}
如何获得一个基于两个数组的组合列表?
例如我的结果集看起来像
-
1,1
-
1,2
-
1,3
-
1,4
-
1,5
被认为是唯一的。是否可以说1,2
与2,1
相同?
我假设您的源列表名为input
:
var output = new List<HashSet<int>>();
for (int i = 0; i < input.Count; i++)
for (int j = i + 1; j < input.Count; j++)
output.Add(new HashSet<int> { input[i], input[j] });
如果您想实际输出结果到控制台:
foreach (var result in output)
Console.WriteLine(string.Join(", ", result));
var sets;
for (int i = 0; i < 49; i++)
{
for (int j = 1; j < 49; j++)
{
if(setc.Contains(new Pair(_myList(i), _myList(j))==false)
{
sets.Add(new Pair(_myList(i), _myList(j))
}
}
}
如果你只是需要总组合,那么有一个公式
totalCombination = n!/(k! * (n-k)!)
如果 n = 50 和 k = 2 ,
可以解析为50!/2!*48!
但是要通过编程解决
for(int i=0;i<49;i++)
{
for(int j=i+1;j<=49;j++)
{
//Collect all the combinations in the form of 'i, j'
}
}