poj 1256 按一定顺序输出全排列(next_permutation)

Sample Input

3
aAb
abc
acba
Sample Output

Aab
Aba
aAb
abA
bAa
baA
abc
acb
bac
bca
cab
cba
aabc
aacb
abac
abca
acab
acba
baac
baca
bcaa
caab
caba
cbaa

对字符串进行全排列,字符的大小规则: 'A'<'a'<'B'<'b'<...<'Z'<'z'.

 

 1 # include <iostream>  
 2 # include <cstring>
 3 # include <algorithm>  
 4 using namespace std;  
 5   
 6   
 7 bool cmp(const char &a, const char &b)
 8    {
 9     if (tolower(a) == tolower(b))  //把字符转换成小写字母,非字母字符不做出处理 
10    {
11        return a < b;
12     }
13     else
14        return tolower(a) < tolower(b);
15 
16 }
17   
18 int main()  
19 {  
20     int num = 0;  
21     cin >> num;  
22     while(num--)  
23     {  
24         char str[100];  
25         cin >> str;  
26         int length = strlen(str);  
27         sort(str, str+length, cmp);  
28         cout << str << endl;  
29         while(next_permutation(str, str + length, cmp))  //全排列 
30         {  
31             cout << str << endl;  
32         }  
33     }  
34     return 0;  
35 }  
View Code

 

转载于:https://www.cnblogs.com/mengchunchen/p/4497974.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值