Advertisement
Guest User

Untitled

a guest
Aug 25th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. static const size_t LETTERS = 26;
  5. void permutations(char *str, size_t idx, size_t size, char *letters)
  6. {
  7. if (idx == size) {
  8. printf("%s\n", str);
  9. return;
  10. }
  11. for (size_t i = 0; i < LETTERS; i++) {
  12. if (!letters[i])
  13. continue;
  14. str[idx] = i + 'a';
  15. letters[i]--;
  16. permutations(str, idx + 1, size, letters);
  17. letters[i]++;
  18. }
  19. }
  20.  
  21. void permutation(const char *str)
  22. {
  23. size_t size = strlen(str);
  24. char result[size + 1];
  25. result[size] = '\0';
  26. static char letters[LETTERS];
  27. //memset(letters, 0, sizeof(letters));
  28. for (size_t i = 0; i < size; i++) {
  29. letters[str[i] - 'a']++;
  30. }
  31. permutations(result, 0, size, letters);
  32. }
  33.  
  34. int main()
  35. {
  36. const char *str = "abc";
  37. permutation(str);
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement