ybt 1199字母全排列

发布时间:2020-08-05 22:50:44 作者:秒杀极限
来源:网络 阅读:1185
全排列

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 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
【输出样例】
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]);
	}
 }


推荐阅读:
  1. A*算法解决十五数码问题
  2. RSA加解密及签名算法的技术原理及其Go语言实现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

算法 递归

上一篇:云服务器:linux解压压缩命令tar详解

下一篇:Python于你于他,只差个学习方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》