您的位置:首页 > 编程语言 > C语言/C++

C++ STL 生成全排序

2009-07-27 15:17 309 查看
使用STL的next_permutation()可以非常方便地生成全排序

Code
1 #include <iostream>
2 #include <vector>
3 #include <algorithm>
4 #include <string.h>
5 #include <stdlib.h>
6 #include <stdio.h>
7 using namespace std;
8
9 int main()
10 {
11 char str[20];
12 char tmp[20];
13 int len, i, cnt=1;
14 char flag[20];
15
16 scanf("%s", str);
17 len=strlen(str);
18
19 sort(str,str+len);
20
21 vector<int> que(len);
22 que[0]=1;
23 flag[1]=str[0];
24 for(i=1;i<len;i++)
25 {
26 if (str[i]==str[i-1])
27 {
28 que[i]=que[i-1];
29 }
30 else
31 {
32 que[i]=++cnt;
33 flag[cnt]=str[i];
34 }
35 }
36 for (i=0;i<len;i++)
37 {
38 printf("%c", str[i]);
39 }
40 printf("\n");
41 while(next_permutation(que.begin(),que.end()))
42 {
43 for(i=0;i<len;i++)
44 {
45 tmp[i]=flag[que[i]];
46 }
47 tmp[len]=0;
48
49 printf("%s\n", tmp);
50 }
51 return 0;
52 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: