1

我有一个包含一些对象的数组列表,我必须得到这些对象的排列?我该怎么做?假设 MyList 是一个包含 4 个对象的数组列表。

ArrayList myList = new ArrayList();
myList.Add(1);
myList.Add(2);
myList.Add(3);
myList.Add(4);

所以arraylist计数是4所以我想要4!= 24我想要那个对象的24个排列。我怎么能在 C# 中做到这一点。请帮助我。

谢谢!

4

5 回答 5

1

斯坦福“编程抽象”课程的这个讲座很好地解释了递归解决方案。

http://www.youtube.com/watch?v=uFJhEPrbycQ#t=37m25s

于 2010-01-18T09:54:42.003 回答
0

看看这个库:Permutations, Combinations, and Variations using C# Generics

于 2010-01-18T10:46:35.023 回答
0

你可以用可爱的递归来做到这一点。

基本情况:大小为 1 的数组的排列是数组本身。

递归情况:大小为 n 的数组的排列是,大小为 (n - 1) 的每个排列,在每个可能的位置添加第 n 个项目。

那有意义吗?

于 2010-01-18T09:47:30.597 回答
0

可能是这样的,虽然没有测试。

public static IEnumerable<string> permute(string s){
    if (s.Count() > 1)
        return from c in s
               from p in permute(s.Remove(s.IndexOf(c), 1))
               select string.Format("{0}{1}", c, p);
    else
        return new string[] { s };
}
于 2010-01-18T09:51:41.960 回答
0

这是一篇很好的文章,深入介绍了 next_permutation 的 C++ 实现。是的,它是用 C++ 编写的,但语法并没有太大的不同,而且解释也足够好。干杯。

于 2010-01-18T09:55:25.310 回答