全排列时间限制:1000ms内存限制:65536KB提交数:151通过数:111【题目描述】给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有‘a’<‘b’<...<‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。【输入】只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在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【输出样例】abcacbbacbcacabcba【来源】No#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;charb[10000][8];intk;voidpai(chara[],intindex,intnum,intlenth){if(num==1){k++;for(inti=0;i<lenth;i++){b[k][i]=a[i];}return;}for(inti=0;i<num;i++){swap(a[index+i],a[index]);pai(a,index+1,num-1,lenth);swap(a[index],a[index+i]);}return;}intmain(){chara[10];scanf("%s",a);intl=strlen(a);pai(a,0,l,l);for(inti=k;i>0;i--){for(intj=0;j<i;j++){if(strcmp(b[i],b[j])<0)swap(b[i],b[j]);}}for(inti=1;i<=k;i++){puts(b[i]);}}