unique && stl的全排列

Posted adelalove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unique && stl的全排列相关的知识,希望对你有一定的参考价值。

stl的全排列:

看代码。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<string>
 5 #include<cstring>
 6 using namespace std;
 7 int n,a[12];
 8 int main()
 9 {
10     scanf("%d",&n);
11     for(int i=1;i<=n;++i) a[i]=i;
12     while(next_permutation(a+1,a+n+1))//下一个全排列函数 
13     {
14         for(int i=1;i<=n;++i)
15          cout<<a[i]<<" ";
16         cout<<endl;
17     }//prev_permutation(a+1,a+n)  <-上一个全排列函数 
18     return 0;
19 }

=============================================================================、

unique() 去重函数:
STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),

还有一个容易忽视的特性是它并不真正把重复的元素删除。

使用时头文件要加#include<iostream>。

因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序

具体用法如下:

 

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 using namespace std;
 7 const int MAXN=8010;
 8 int a[MAXN];
 9 int main()
10 {
11     int N;
12     while(scanf("%d",&N)!=EOF)
13    {
14         for(int i=1;i<=N;i++)scanf("%d",&a[i]);
15         sort(a+1,a+N+1);
16         int k=unique(a+1,a+N+1)-a;
17         printf("k=%d\n",k);
18         for(int i=1;i<=N;i++)
19        printf("%d ",a[i]),puts("");
20     }
21     return 0;
22 }

 

(?′?‵?)I L???????。

 

以上是关于unique && stl的全排列的主要内容,如果未能解决你的问题,请参考以下文章

STL(C++)

(全排列)数组的全排列问题

poj1256(全排列stl)

STL中的全排列实现

[剑指Offer]38-字符串的全排列

STL之next_permutation函数对各种类型的全排列实例