輸入一個字符串,輸出其所有字符的全排列。如 abc 輸出 abc acb bac bca cba cab。
k 位字符,遞歸生成剩餘位置的排列。str[k] 與 str[i] (i>=k) 實現固定不同字符。#include <stdio.h>
void Permutation(char* pStr, char* pBegin) {
if (*pBegin == '\0') {
printf("%s ", pStr);
} else {
for (char* pCh = pBegin; *pCh != '\0'; ++pCh) {
char tmp = *pCh; *pCh = *pBegin; *pBegin = tmp; // 交換
Permutation(pStr, pBegin + 1);
tmp = *pCh; *pCh = *pBegin; *pBegin = tmp; // 回溯
}
}
}
void Permutation(char* pStr) {
if (pStr) Permutation(pStr, pStr);
}
int main(void) {
char str[] = "abc";
Permutation(str);
putchar('\n');
return 0;
}
abc acb bac bca cba cab
