fork download
  1. // http://i...content-available-to-author-only...e.com/cJLU0O
  2. // 並べ替え
  3. // 重複非表示
  4.  
  5. #include<stdio.h>
  6. #include<string.h>
  7.  
  8. char res_d[4 * 3 * 2 * 1][5]; // 結果貯蔵
  9. int res_i; // 結果個数
  10.  
  11. // 並べ替え結果処理
  12. void kekka_shori(char *p)
  13. {
  14. int i;
  15. // 重複チェック
  16. for (i = 0; i < res_i; i++)
  17. if (0 == strcmp(res_d[i], p))
  18. return;
  19. // 重複無ければ蓄える
  20. strcpy(res_d[res_i++], p);
  21. }
  22.  
  23. // 文字列の右n桁を左にスライド
  24. void narabe(char *d, int n)
  25. {
  26. int i, j, len = strlen(d);
  27. char c;
  28.  
  29. if (n <= 1) {
  30. kekka_shori(d);
  31. return;
  32. }
  33. for (j = 0; j < n; j++) {
  34. narabe(d, n - 1);
  35. c = d[len - n];
  36. for (i = 0; i < n - 1; i++)
  37. d[len - n + i] = d[len - n + i + 1];
  38. d[len - n + i] = c;
  39. }
  40. }
  41.  
  42. int main()
  43. {
  44. char d[] = "aabc";
  45. int i;
  46.  
  47. // 初期化
  48. res_i = 0;
  49. // 並べ替えデータ作成(重複チェック)
  50. narabe(d, strlen(d));
  51. // 表示
  52. for (i = 0; i < res_i; i++) {
  53. printf("%s\n", res_d[i]);
  54. }
  55.  
  56. return 0;
  57. }
Success #stdin #stdout 0s 1788KB
stdin
Standard input is empty
stdout
aabc
aacb
abca
abac
acab
acba
bcaa
baac
baca
caab
caba
cbaa