Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- static const size_t LETTERS = 26;
- void permutations(char *str, size_t idx, size_t size, char *letters)
- {
- if (idx == size) {
- printf("%s\n", str);
- return;
- }
- for (size_t i = 0; i < LETTERS; i++) {
- if (!letters[i])
- continue;
- str[idx] = i + 'a';
- letters[i]--;
- permutations(str, idx + 1, size, letters);
- letters[i]++;
- }
- }
- void permutation(const char *str)
- {
- size_t size = strlen(str);
- char result[size + 1];
- result[size] = '\0';
- static char letters[LETTERS];
- //memset(letters, 0, sizeof(letters));
- for (size_t i = 0; i < size; i++) {
- letters[str[i] - 'a']++;
- }
- permutations(result, 0, size, letters);
- }
- int main()
- {
- const char *str = "abc";
- permutation(str);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement