如何计算无重复的n个元素的组合

时间:2018-06-22 10:20:03

标签: c# visual-studio combinations

嗨,我需要无重复地计算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);
    }
}

我做错了什么?!!有没有更快的方法来获得所有组合!?!

0 个答案:

没有答案