第9講 関数の再帰的使用
第7話 4次順列を関数の再帰的使用を使わずにfor文で実現する
4次順列生成プログラム
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使うために必要なお呪い
void f(int n);
int main() {
  f(4);
  return(0);
}
void f(int n) {
  int i, j, k, l,m,h,hh,hhh, x[20], cn = 0;
  for (i = 0; i<n; i++) {
    x[0] = i + 1;
    for (j = 0; j<n; j++) {
      h = 1;
      if (j + 1 == x[0])h = 0;
      if (h == 1)x[1] = j + 1;
      if (h == 1) {
        for(k=0;k<n;k++){
          hh=1;
          for(l=0;l<2;l++){
            if(k+1==x[l]){
              hh=0;
              break;
            }
          }
          if(hh==1)x[2] = k + 1;
          if(hh==1){
            for(l=0;l<n;l++){
              hhh=1;
              for(m=0;m<n;m++){
                if(l+1==x[m]){
                  hhh=0;
                  break;
                }
              }
              if(hhh==1)x[3]=l+1;
              if(hhh==1){
                for(m=0;m<n;m++){
                  cout << x[m] << " ";
                }
                cout << endl;
                cn++;
              }
            }
          }
        }
      }
    }
  }
  cout << "生成された順列は" << cn << "個です" << endl;
}
実行画面
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
生成された順列は24個です。

いよいよ普遍版n次順列生成ソフトの開発をはじめたいと思いますが、
初心者どころか中級者にさえ難しい課題ですから、
ヒントを次話で説明します。

第6話へ   第8話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc** c言語 c** 入門 初心者 基礎から応用まで
eclipse c** 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C**入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC**による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ