以下のプログラムでijkと入力すると
#include <stdio.h> void sub(int num, int* cnt, int* flg, char* data, char* disp) { if (num == 3) { disp[3] = '\0'; printf("%s ", disp); *cnt += 1; if (*cnt % 5 == 0) { printf("\n"); *cnt = 0; } return; } for (int i = 0; i < 3; i++) { if (!flg[i]) { flg[i] = 1; disp[num] = data[i]; sub(num + 1, cnt, flg, data, disp); flg[i] = 0; } } } int main() { char data[4]; scanf("%s", data); char disp[4]; int flg[3] = { 0 }; int cnt = 0; sub(0, &cnt, flg, data, disp); return 0; }
ijk
ijk ikj jik jki kij
kji
と表示されますが、
iikと入力すると
iik
iik iki iik iki kii
kii
となり同じ文字列が表示されます。
oooと入力すると
ooo
ooo ooo ooo ooo ooo
ooo
となります。
iik, ooo と入力して出力がそれぞれ
iik
iik iki kii
ooo
ooo
と同じ文字列が表示されなくするにはどうプログラム変更すればよいか
ご存じの方よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー