全排列

mac2022-06-30  23

       今天学了个叫全排列的东西:next_permutation(start,end),和prev_permutation(start,end)。头文件是#include <algorithm>

next_permutation(start,end):求的是当前排列的下一个排列。

prev_permutation(start,end):求的是当前排列的上一个排列。

很懵逼对吧,下面是实例:

#include <iostream> #include <algorithm> using namespace std; int main() { int num[3]={1,2,3}; do { cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl; }while(next_permutation(num,num+3)); return 0; }

输出:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

 

while(next_permutation(num,num+3))中的3改为2时,输出就变为了:

1 2 3

2 1 3

 

另外,需要强调的是,next_permutation()在使用前需要对欲排列数组按升序排序,否则只能找出该序列之后的全排列数。比如,如果数组num初始化为2,3,1,那么输出就变为了:

2 3 1

3 1 2

3 2 1

此外,next_permutation(node,node+n,cmp)可以对结构体num按照自定义的排序方式cmp进行排序。

 

转载于:https://www.cnblogs.com/RootVount/p/10420139.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)