如何在每个可能的有序组合中返回此列表?
我有这个列表,并希望返回一个以不同的可能性排序的新列表,如1,2,3,4
,2,3,1,4
等(所有可能性)
var list = new List<string>();
list.Add("1");
list.Add("2");
list.Add("3");
list.Add("4");
这是怎么做到的?
答案 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);