2011年9月9日金曜日

全ての順列、組み合わせを配列として取得

全ての順列、組み合わせを配列として取得する例題です。

配列は nPr/nCr/nΠr/nHr の数だけ必要になるため、必要な数を計算し配列を準備し、その配列内に結果を格納しています。
C++/STL で簡単に行う方法はこちら

順列 (Permutation): 異なるn個から順序を考えてr個を選ぶ。
組み合わせ (Combination): 異なるn個から順序を考えずにr個を選ぶ。
重複順列 (Repeated permutation): 異なるn種類から順序を考えてr個を選ぶ。
重複組み合わせ (Repeated combination): 異なるn種類から順序を考えずにr個を選ぶ。
実行結果

6 件のコメント:

  1. dosのバイナリ置いて欲しいです。

    返信削除
    返信
    1. ビルド環境を準備するのが大変であれば、
      http://codepad.org/
      にて動作を確認してみてください。

      http://codepad.org/PpC1IrBx
      に今回の例題の実行例を保存しています(scanfが使えないのでその部分はコメントアウト)。

      実行ファイルやバイナリを掲載するのはブログの性質と合わないのと、ウイルスとして判定される可能性があるので、今後も掲載しません。

      削除
  2. calcNCRとか、calcNPRってどんな関数ですか?

    返信削除
    返信
    1. 内部的に順列や組合せに必要な配列の数を計算しておく関数ですね。
      それを元に配列を準備しておき、クラス内で内部的に値を保持しておきます。

      削除
    2. ユーザー関数なのでしょうか?
      プログラムの内容を教えて欲しいです。

      削除
    3. 関数内の記述は上記のように自分で行っていますので、ユーザー定義関数となります。

      本サイトはあくまで例題を多く準備しておくだけのサイトになりますので、詳細な説明
      となると個別に説明した方が分かりやすいかと思います。
      タイトルの下、はじめに、のページ内にメアドを貼っていますので、よければそちらに
      メール頂ければと思います。

      削除