1

いくつかのオブジェクトを含む配列リストがあり、そのオブジェクトの順列を取得する必要がありますか?どうすればよいですか? MyList が、4 つのオブジェクトを含む配列リストであるとします。

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

arraylist count は 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

これは、next_permutation の C++ 実装について詳しく説明している素晴らしい記事です。はい、C++ ですが、構文はそれほど変わらず、説明も十分です。乾杯。

于 2010-01-18T09:55:25.310 に答える
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 に答える