fork download
  1. // http://i...content-available-to-author-only...e.com/dSiqXY
  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. strcpy(res_d[res_i++], p); // 蓄える
  15. }
  16.  
  17. // 文字列の右n桁を左にスライド
  18. void narabe(char *d, int n)
  19. {
  20. int i, j, len = strlen(d);
  21. char c;
  22.  
  23. if (n <= 1) {
  24. kekka_shori(d);
  25. return;
  26. }
  27. for (j = 0; j < n; j++) {
  28. narabe(d, n - 1);
  29. c = d[len - n];
  30. for (i = 0; i < n - 1; i++)
  31. d[len - n + i] = d[len - n + i + 1];
  32. d[len - n + i] = c;
  33. }
  34. }
  35.  
  36. int main()
  37. {
  38. char d[] = "aabc";
  39. int i, j;
  40.  
  41. res_i = 0;
  42. narabe(d, strlen(d));
  43. for (i = 0; i < res_i; i++) {
  44. for (j = 0; j < i; j++) {
  45. if (0 == strcmp(res_d[i], res_d[j])) {
  46. j = -1; // jを重複発見フラグに使う
  47. break;
  48. }
  49. }
  50. if (j >= 0)
  51. printf("%s\n", res_d[i]);
  52. }
  53.  
  54. return 0;
  55. }
Success #stdin #stdout 0s 1788KB
stdin
Standard input is empty
stdout
aabc
aacb
abca
abac
acab
acba
bcaa
baac
baca
caab
caba
cbaa