溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ybt 1199字母全排列

發(fā)布時間:2020-08-05 22:50:44 來源:網(wǎng)絡(luò) 閱讀:1175 作者:秒殺極限 欄目:編程語言
全排列

時間限制: 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]);
	}
 }


向AI問一下細節(jié)

免責(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)容。

AI