輸入一個(gè)字符串,打印出該字符串中字符的所有排列。例如輸入字符串a(chǎn)bc,則打印出由字符a、b、c所能排列出來(lái)的所有字符串a(chǎn)bc、acb、bac、bca、cab和cba。
創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元隴南做網(wǎng)站,已為上家服務(wù),為隴南各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
對(duì)于一個(gè)字符來(lái)說(shuō),只有一個(gè)排列就是其自身,那么對(duì)于多個(gè)字符的組合來(lái)說(shuō),也是有規(guī)律可循的:可以在字符串中選出一個(gè)字符來(lái)固定出頭部,比如上述先用a來(lái)開(kāi)頭,那么后面的部分就由b、c來(lái)組成,之后再將b、c分別更換為頭部,后面的就由剩下的字符來(lái)組成,而如果字符串中的字符比較多的時(shí)候,可以先從字符串的尾部開(kāi)始排列,首先排列最后兩個(gè)字符,交換后面兩個(gè)字符,然后增加到三個(gè)字符,更換頭部,排列剩下的部分,再依次增加到四個(gè)字符,更換頭部,排雷剩下的部分......因此,這種思路可以用遞歸來(lái)實(shí)現(xiàn):
#includeusing namespace std; void PrintAllArray(char* str, char *p_start) { if(str != NULL)//判斷參數(shù)有效性 { //當(dāng)遍歷到字符串結(jié)尾的時(shí)候就應(yīng)當(dāng)將字符串打印出來(lái) if(*p_start == '\0') { cout< 運(yùn)行程序:
《完》
分享標(biāo)題:字符串的排列——28
當(dāng)前鏈接:http://weahome.cn/article/ipieds.html