You need to understand the mathematical theory of permutation cycles, also known as "orbits" (it's important to know both "terms of art" since the mathematical subject, the heart of combinatorics, is quite advanced, and you may need to look up research papers which could use either or both terms). For a simpler introduction to the theory of permutations, wikipedia can help. Each of the URLs I ment
こんばんは いつの間にか新学期が始まっていました。 今年で大学生活も4年目に突入です。 最近は研究室に配属されて、ゼミやら発表やらで忙しくしています。 今回は研究で組み合わせの列挙が必要になって、そのときにまあまあ効率のいい再帰アルゴリズムを思いついたので紹介します。 そもそも組み合わせとは何ぞ?という人のために少し解説します。 組み合わせとは、例えば 4人の中から2人を選ぶとき、人をa,b,c,dとおくと選び方は {(a,b),(a,c),(a,d),(b,c),(b,d),(c,d)} になります。 この選び方を組み合わせと言います。 一般的に組み合わせ(Combination)はn個の中からm個を選ぶときの選び方です。 ここで注意が必要なのは似たようなもので順列(Permutation)というのがありますが、これは選び方だけではなく並べ方も考慮に入れるところが違います(実際に私もよく
あらいさんに書かんと沈めるでいわれたので書いてみた。 アルゴリズムを場当たりで考えて書いてたんですっげー時間かかった。 計5時間。 これを参考にしてからは1時間。 nCr(n個からr個取り出す組合せ)は、 1. リストの先頭要素を除いた残りのリストからr-1個を選ぶ組合せのそれぞれに先頭要素を加えたものと、 2. リストの先頭要素を除いたリストからr個を選ぶ組合せ の合計となる(1および2はそれぞれ再帰処理となる)。 3. n = r のときは選び方は一つなのでリストをそのままリストにして返す。 4. r = 1 のときは選び方はn通りあるのでリストの要素をそれぞれリストにして返す。 5. r = 0 または r がリストの要素数より大きいときは空リストを返す。 http://d.hatena.ne.jp/ibaza/20080303/1204476552 これくらいもっと早くかけなきゃだ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く