当订单很重要时,c#排列没有重复

时间:2014-08-06 12:51:28

标签: c# algorithm permutation

我希望从字符串列表中获取排列而不重复。我有一个工作代码:

static IEnumerable<IEnumerable<T>> GetPermutations<T>(IEnumerable<T> items, int count)
    {
        int i = 0;
        foreach (var item in items)
        {
            if (count == 1)
                yield return new T[] { item };
            else
            {
                foreach (var result in GetPermutations(items.Skip(i + 1), count - 1))
                    yield return new T[] { item }.Concat(result);
            }
            ++i;
        }
    }


var list = new List<string> { "17", "33", "22", "32", "24", "210", "35" };
        var result = GetPermutations(list, 5);
        foreach (var perm in result)
        {
            foreach (var c in perm)
            {
                another_list.Add(c);
            }
        }

输入7个字符串,长度为5,得到21个结果,但实际上我想得到2520个组合字符串的结果。从数学的角度来看,我知道顺序是影响这里差异的因素。问题是我不知道如何将订单实现到我在网络上找到的代码或其他代码中。

0 个答案:

没有答案