マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第9章 関数の再帰的使用
第2話 3次順列全生成

(
123 132 213 231 312 321
総数 = 6
)
を実現するコード例
#include<iostream>//インクルードファイルiostreamの読み込み
#include<conio.h>//while(!_kbhit());を使うためのお呪い
#include<string> //文字列変数を使えるようにするために組み込む
#include <iomanip> //setprecisionを使えるように組み込む
#include <cmath>//powなどを使うときに必要
#include <ctime>//time()(←現時刻発生する関数)を使うために必要
using namespace std;//coutを使うときに必要なお呪い
const int n = 3;//具体的な数字を使うのではなく、 n を使うと汎用性のあるプログラムになる!
void n次順列(int* a);// 1次元配列配列
int main() {
int a[n]; // 1次元配列配列
n次順列(a);
while (!_kbhit());//待機させるための命令
return 0;//int main() を終わるためのお呪い
}
void n次順列(int* a) {
int 総数 = 0;
for (int i = 0; i < n; i++) {
a[0] = i + 1;
for (int j = 0; j < n; j++) {
if (i != j) {
a[1] = j+ 1;
for (int k = 0; k < n; k++) {
if (k != j && k != i) {
a[2] = k + 1;
cout << a[0] << a[1] << a[2] << " ";
総数++;
if (総数 > 0 && (総数 % 10) == 0)cout << endl;
}
}
}
}
}
cout << endl << "総数 = " << 総数 << endl;
}
次話の課題は4次順列全生成です。

(
1234 1243 1324 1342 1423 1432 2134 2143 2314 2341
2413 2431 3124 3142 3214 3241 3412 3421 4123 4132
4213 4231 4312 4321
総数 = 24
)
条件は10個ごとに改行することです。