每个可能的有序/排序组合中的返回列表

时间:2014-12-28 03:37:07

标签: c# asp.net

如何在每个可能的有序组合中返回此列表? 我有这个列表,并希望返回一个以不同的可能性排序的新列表,如1,2,3,42,3,1,4等(所有可能性)

 var list = new List<string>();
 list.Add("1");
 list.Add("2");
 list.Add("3");
 list.Add("4");

这是怎么做到的?

1 个答案:

答案 0 :(得分:0)

取自CodeProject上的以下article关于列表排列迭代器:

public static IEnumerable<IList> Permutate(IList sequence, int count)
{
    if (count == 1) yield return sequence;
    else
    {
        for (int i = 0; i < count; i++)
        {
            foreach (var perm in Permutate(sequence, count - 1))
                yield return perm;
            RotateRight(sequence, count);
        }
    }
}

您可以使用以下方法:

var listPermutated = Permutate(list, list.Count);