Я хочу напечатать всю перестановку строки в лексикографическом порядке. Я пишу этот код:
void permute(char *a, int i, int n) {
if (i == (n-1)) printf("\"%s\"\n", a);
else {
for (int j = i; j < n; j++) {
swap((a+i), (a+j));
permute(a, i+1, n);
swap((a+i), (a+j));
}
}
}
И у меня есть строка string abc
, поэтому я хочу получить все перестановки в лексикографическом порядке, как в левом столбце, но у меня есть результат, как в правом столбце.
"abc" "abc"
"acb" "acb"
"bac" "bac"
"bca" "bca"
"cab" <
"cba" "cba"
> "cab"
Может кто-нибудь мне помочь? Я видел некоторые алгоритмы, но они выглядят сложными. Я думаю, что я могу сохранить все сгенерированные строки в массиве, а затем отсортировать этот массив, но я не могу написать это (я новичок в C).