標籤:

字元串的排序

字元串的排序

輸入一個字元串,列印出該字元串中字元的所有排序。

思路:把字元串看成2部分。第1部分是它的第一個字元,第2部分是後面所有字元。

求全排列分成2部分。第1:求所有可能出現在第一個位置的字元,即把第一個字元和後面的所有字元進行交互。第2:固定第一個字元,求後面所有字元的全排列。這時候,仍然把後面所有字元分成2部分,同理。

參考代碼:

root@gt:/home/git/Code# ./a.out abcacbbacbcacbacabroot@gt:/home/git/Code# cat permutation.c #include <stdio.h>void core(char* pstr,char* pbegin){ if(*pbegin == ) { printf("%s
",pstr); } else { for(char* pch = pbegin;*pch != ;++pch) { char temp = *pch; *pch = *pbegin; *pbegin = temp; core(pstr,pbegin + 1); temp = *pch; *pch = *pbegin; *pbegin = temp; } }}void permutation(char* pstr){ if(pstr == NULL) return; core(pstr,pstr);}int main(){ char pstr[] = {a,b,c,}; permutation(pstr); return 0;}

推薦閱讀:

列印1到最大的n位數
反轉鏈表
二叉樹的鏡像
如何準備互聯網行業筆試?

TAG:演算法 | 筆試 |