日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

全排列 (C语言实现)

發(fā)布時(shí)間:2025/10/17 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全排列 (C语言实现) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://blog.csdn.net/v_july_v/article/details/6879101

轉(zhuǎn)自:http://blog.csdn.net/fanzitao/article/details/7879027

題目:輸入一個(gè)字符串,打印出該字符串中字符的所有排列。
例如輸入字符串a(chǎn)bc,則輸出由字符a、b、c 所能排列出來的所有字符串
abc、acb、bac、bca、cab 和cba。

分析:此題最初整理于去年的微軟面試100題中第53題,第二次整理于微軟、Google等公司非常好的面試題及解答[第61-70題] 第67題。無獨(dú)有偶,這個(gè)問題今年又出現(xiàn)于今年的2011.10.09百度筆試題中。ok,接下來,咱們先好好分析這個(gè)問題。
一、遞歸實(shí)現(xiàn)
從集合中依次選出每一個(gè)元素,作為排列的第一個(gè)元素,然后對剩余的元素進(jìn)行全排列,如此遞歸處理,從而得到所有元素的全排列。以對字符串a(chǎn)bc進(jìn)行全排列為例,我們可以這么做:以abc為例
固定a,求后面bc的排列:abc,acb,求好后,a和b交換,得到bac
固定b,求后面ac的排列:bac,bca,求好后,c放到第一位置,得到cba
固定c,求后面ba的排列:cba,cab。代碼可如下編寫所示 #include<iostream> using namespace std; void Permutation(char* pStr, char* pBegin); void permutation(char* pStr) { Permutation(pStr, pStr); } void Permutation(char* pStr, char* pBegin) { if(!pStr || !pBegin) return; if(*pBegin == '\0') { printf("%s\n", pStr); } else { for(char* pCh = pBegin; *pCh != '\0'; ++ pCh) { // swap pCh and pBegin char temp = *pCh; *pCh = *pBegin; *pBegin = temp; Permutation(pStr, pBegin + 1); // restore pCh and pBegin temp = *pCh; *pCh = *pBegin; *pBegin = temp; } } } int main() { char str[] ={'a','b','c','d','\0'};permutation(str);getchar();return 0; }

總結(jié)

以上是生活随笔為你收集整理的全排列 (C语言实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。