順列を出力
a,b,c,dの4文字でできる文字列すべての順列を列挙するプログラムをかいてみました
// a,b,c,dからできる文字列の組み合わせを列挙する #include <stdio.h> #define N (4) const char chars[N] = {'a', 'b', 'c', 'd'}; int visit[N]; char out[N+1]; void search(int pos, int index, int maxindex) { int i; // just for count visit[pos] = 1; if (index == maxindex){ out[index] = chars[pos]; out[index+1] = '\0'; printf("%s\n", out); visit[pos] = 0; // roll back return; } for (i = 0; i < N; i++) if (!visit[i]){ out[index] = chars[pos]; search(i, index+1, maxindex); } visit[pos] = 0; // roll back return; } int main() { int i, j; // just for count for (i = 1; i <= N; i++) // 1個からN個に掛けて for (j = 0; j < N; j++) // 全ての場所から search(j, 0, i-1); // 探索 return 0; }