1199:全排列

简介: 1199:全排列

1199:全排列

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列

我们假设对于小写字母有‘a’ <‘b’ < ... <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。

【输入】

只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。

【输出】

输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:

已知S=s1s2...sk,T=t1t2...tk,则S<T等价于,存在p(1≤p≤k),使得s1=t1,s2=t2,...,s(p−1)=t(p−1),sp<tp成立。

【输入样例】

abc

【输出样例】

abc

acb

bac

bca

cab

cba

【提示】

本题目禁止使用STL及包含可以使用的相关调用。

【来源】

No

1. #include<stdio.h>
2. #include<iostream> 
3. #include<cstring>
4. using namespace std;
5. bool b[1001];//标记 
6. char s[1001],as[1001]; //s存储原字符串 as存储排序方案 
7. int len;
8. void dfs(int i)
9. {
10.   for(int j=0;j<len;j++){
11.     if(!b[s[j]]){//判断是否用过 
12.       b[s[j]]=1;
13.       as[i]=s[j];
14.       if(i==len-1) printf("%s\n",as);//长度达到输出 
15.       else dfs(i+1);//否则取下一个长度 
16.       b[s[j]]=0;//标记取消 
17.     }
18.   }
19. }
20. int main()
21. {
22.   scanf("%s",s);
23.   len=strlen(s);
24.   dfs(0);//从长度0开始搜索 
25.   return 0;
26.  }
1. #include<stdio.h>
2. #include<iostream> 
3. #include<cstring>
4. using namespace std;
5. char a[1001];
6. int b[1001],c[1001]={0};
7. int len;
8. void dfs(int n)
9. {
10.   if(n==len){
11.     for(int i=0;i<len;i++) cout<<a[b[i]];
12.     cout<<endl;
13.   }
14.   for(int i=0;i<len;i++){
15.     if(!c[i]){//判断是否用过 
16.       c[i]=1;
17.       b[n]=i;
18.       dfs(n+1);//取下一个长度 
19.       c[i]=0;//标记取消 
20.     }
21.   }
22. }
23. int main()
24. {
25.   scanf("%s",a);
26.   len=strlen(a);
27.   dfs(0);//从长度0开始搜索 
28.   return 0;
29.  }

 

相关文章
|
1月前
|
Java
leetcode-46:全排列
leetcode-46:全排列
27 1
|
5天前
|
C++
【洛谷 P1706】全排列问题 题解(全排列)
该问题要求按字典序输出从1到n的所有不重复排列。输入为整数n,输出为每行一个的数字序列,每个数字占5个宽度。样例输入3,输出6行全排列。代码使用C++,通过`next_permutation`函数生成所有排列。注意n的范围是1到9。
6 0
|
1月前
|
存储
全排列问题
全排列问题
11 0
|
1月前
|
Java
leetcode-47:全排列 II
leetcode-47:全排列 II
25 0
|
9月前
全排列
全排列,
25 0
|
10月前
|
机器学习/深度学习 存储 算法
算法训练Day29|* 491.递增子序列* 46.全排列* 47.全排列 II
算法训练Day29|* 491.递增子序列* 46.全排列* 47.全排列 II
|
12月前
|
机器学习/深度学习 算法 安全
LeetCode - #47 全排列 II
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
leetcode:46.全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。
38 0
leetcode:47.全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列。
38 0