嗨,我需要无重复地计算n个元素的所有可能组合,我正在使用以下代码,但是不幸的是,当我有很多元素时,要获取所有组合会花费太多...
private void calculateCombinationThread(int index,
int n,
List<Ricerca> elements,
List<Ricerca> rsr,
ref List<List<Ricerca>> Combinations)
{
if (n == 0)
{
if (rsr.Count != 0)
{
List<Ricerca> rrr = new List<Ricerca>() { };
rrr.AddRange(rsr);
Combinations.Add(rrr);
}
return;
}
for (int i = index; i <= elements.Count - n && !outOfMemory; ++i)
{
rsr.Add(elements[i]);
calculateCombinationThread(i + 1, n - 1, elements, rsr, ref Combinations);
rsr.RemoveAt(rsr.Count - 1);
}
}
我做错了什么?!!有没有更快的方法来获得所有组合!?!