我已经尝试过了,而且我找不到我想要完成的事情。
假设我有一个List<int>
,大约有50个数字
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
相同?
答案 0 :(得分:1)
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))
}
}
}
答案 1 :(得分: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));
答案 2 :(得分:0)
如果您只需要总组合,那么就有一个公式
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'
}
}