順列組み合わせを表示

順列組み合わせを再起関数で求めて表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの作成

  1. 新規プロジェクトから、空の Console Application を作成して、次のファイルをプロジェクトに加えて下さい。
  2. 順列組み合わせを表示するソースコードです。
    NUM は tbl[] のサイズ(順列の個数)です。自由に設定して下さい。
    list() は求めた順列を表示する関数です。
    1~4の数字の組み合わせで24通りが表示されます。
    jyun() が順列組み合わせを求める再起関数です。
    t[] が配列の先頭で n がその個数です。
    main() では tbl[] に 1~NUM の値を格納して jyun() 関数を呼び出します。
        /*★ 順列を求める     前田  稔 ★*/
        #include    <stdio.h>
        #define     NUM     4
        int         tbl[NUM];
    
        // 順列を List
        void  list()
        {   int     i;
            for(i=0; i<NUM; i++)  printf("%d ",tbl[i]);
            printf("\n");
        }
    
        // 順列を求める
        void  jyun(int t[], int n)
        {   int     i,k,w;
    
            if (n<2)
            {   list();
                return;
            }
            k= n-1;
            for(i=n-1; i>=0; i--)
            {   w= t[k];
                t[k]= t[i];
                t[i]= w;
                jyun(t,k);
                t[i]= t[k];
                t[k]= w;
            }
            return;
        }
    
        //★ MAIN PROGRAM
        int  main()
        {   int     i;
    
            for(i=0; i<NUM; i++)    tbl[i]= i+1;
            jyun(tbl,NUM);
            return(0);
        }
        
  3. ビルド(コンパイル)に続いて実行を行います。
    次の表は実行結果です。
    1 2 3 4 
    2 1 3 4 
    1 3 2 4 
    3 1 2 4 
    3 2 1 4 
    2 3 1 4 
    1 2 4 3 
    2 1 4 3 
    1 4 2 3 
    4 1 2 3 
    4 2 1 3 
    2 4 1 3 
    1 4 3 2 
    4 1 3 2 
    1 3 4 2 
    3 1 4 2 
    3 4 1 2 
    4 3 1 2 
    4 2 3 1 
    2 4 3 1 
    4 3 2 1 
    3 4 2 1 
    3 2 4 1 
    2 3 4 1 
    

超初心者のプログラム入門(C/C++)