您好,登錄后才能下訂單哦!
全排列 時間限制: 1000 ms 內(nèi)存限制: 65536 KB 提交數(shù): 151 通過數(shù): 111 【題目描述】 給定一個由不同的小寫字母組成的字符串,輸出這個字符串的所有全排列。 我們假設(shè)對于小寫字母有‘a(chǎn)’ <‘b’ < ... <‘y’<‘z’,而且給定的字符串中的字母已經(jīng)按照從小到大的順序排列。 【輸入】 只有一行,是一個由不同的小寫字母組成的字符串,已知字符串的長度在1到6之間。 【輸出】 輸出這個字符串的所有排列方式,每行一個排列。要求字母序比較小的排列在前面。字母序如下定義: 已知S = s1s2...sk,T = t1t2...tk,則S<T等價于,存在p(1<=p<=k),使得s1=t1,s2=t2,...,sp-1=tp-1, sp<tp成立。 【輸入樣例】 abc 【輸出樣例】 abc acb bac bca cab cba 【來源】 No #include<iostream>#include<cstdio> #include<cstring> using namespace std; char b[10000][8];int k; void pai(char a[],int index,int num,int lenth ) { if(num==1) { k++; for(int i=0;i<lenth;i++) { b[k][i]=a[i]; } return; } for(int i=0;i<num;i++) { swap(a[index+i],a[index]); pai(a,index+1,num-1,lenth); swap(a[index],a[index+i]); } return;}int main(){ char a[10]; scanf("%s",a); int l=strlen(a); pai(a,0,l,l); for(int i=k;i>0;i--) { for(int j=0;j<i;j++) { if(strcmp(b[i],b[j])<0) swap(b[i],b[j]); } } for(int i=1;i<=k;i++) { puts(b[i]); } }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。