C# arraylist对象的置换

C# arraylist对象的置换,c#,algorithm,permutation,discrete-mathematics,C#,Algorithm,Permutation,Discrete Mathematics,我有一个arraylist,其中包含一些对象,我必须得到这些对象的排列?我怎么做? 假设MyList是一个包含4个对象的arraylist ArrayList myList = new ArrayList(); myList.Add(1); myList.Add(2); myList.Add(3); myList.Add(4); 所以arraylist计数是4,所以我想要4=24 我想要24个排列的对象。 我怎样才能在C中做到这一点。请帮助我 谢谢 您可以通过可爱的递归来实现这一点 基本情况:

我有一个arraylist,其中包含一些对象,我必须得到这些对象的排列?我怎么做? 假设MyList是一个包含4个对象的arraylist

ArrayList myList = new ArrayList();
myList.Add(1);
myList.Add(2);
myList.Add(3);
myList.Add(4);
所以arraylist计数是4,所以我想要4=24 我想要24个排列的对象。 我怎样才能在C中做到这一点。请帮助我


谢谢

您可以通过可爱的递归来实现这一点

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

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


这有意义吗?

您可以通过可爱的递归来实现这一点

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

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


这有意义吗?

可能是这样,但没有经过测试

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 };
}

可能是这样,但没有经过测试

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 };
}

斯坦福大学的课程《编程抽象》很好地解释了递归解决方案


斯坦福大学的课程《编程抽象》很好地解释了递归解决方案


这是一篇深入介绍NXTX置换的C++实现的好文章。是的,它是C++的,但是语法没有太大的不同,解释也很好。欢呼。

< P>这是一篇深入介绍NXTX置换的C++实现的好文章。是的,它是C++的,但是语法没有太大的不同,解释也很好。干杯。

查看此库:

查看此库:

只需谷歌搜索有关排列和组合的示例。没那么难。。。这已经被问了100次了。让我帮你用谷歌搜索一下:很好,你用“家庭作业”标记了这个问题。谷歌只是一个关于排列和组合的例子。没那么难。。。这已经被问了100次了。让我帮你谷歌一下:你把问题标上了“家庭作业”标签,这很好,因为你再也找不到那个链接了。不过,这似乎也是一个不错的链接:再也找不到那个链接了。不过,这似乎也是个不错的选择: