next_permutation 函数

STL的next_permutation函数可以求出某个特定序列的下一个排列,当然,如果对一个给定序列,排序之后可以轻松求出全排列......

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #include<map>
 7 #include<set>
 8 #include<vector>
 9 #include<sstream>
10 using namespace std;
11 #define ll long long
12 const int inf=99999999;
13 const int mod=1e9+7;
14 //const int maxn=;
15 int num[100];
16 int main()
17 {
18     ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
19
20     int n;
21     cin>>n;
22
23     for(int i=0;i<n;i++)
24         cin>>num[i];
25
26     sort(num,num+n);
27
28     cout<<"全排列 :"<<endl;
29     do
30     {
31         for(int i=0;i<n-1;i++)
32             cout<<num[i]<<" ";
33         cout<<num[n-1]<<endl;
34     }
35     while(next_permutation(num,num+n));
36
37     return 0;
38 }

原文地址:https://www.cnblogs.com/xwl3109377858/p/10986717.html

时间: 2024-11-05 14:58:44

next_permutation 函数的相关文章

全排列问题(next_permutation函数)

D的小L 时间限制:4000 ms  |  内存限制:65535 KB 难度:2 描述       一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡出了个题目想难倒匡匡(小L很D吧),有一个数n(0<n<10),写出1到n的全排列,这时匡匡有点囧了,,,聪明的你能帮匡匡解围吗? 输入 第一行输入一个数N(0<N<10),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个整数x(0<x<10) 输出 按

HDOJ 1027 Ignatius and the Princess II - next_permutation函数

Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5447    Accepted Submission(s): 3198 Problem Description Now our hero finds the door to the BEelzebub feng5166. He o

next_permutation函数

转自此处 http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html 这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>下面是以前的笔记    与之完全相反的函数还有prev_permutation  (1) int 类型的next_permutation int main(){ int a[3];a[0]=1;a[1]=2;a[2]=3; do{cout<<a[0]<<" &

《STL源码剖析》--next_permutation函数

STL中提供了2个计算排列组合关系的算法.分别是next_permucation和prev_permutaion. next_permutation是用来计算下一个(next)字典序排列的组合,而prev_permutation用来计算上一个(prev)字典序的排列组合. 字典排序是指排列组合中,按照大小由小到大的排序,例如123的排列组着,字典排序为123,132,213,231,312,321. 看一下next_permutation的实现原理: 从序列的后面向前找,找了两个相邻的元素p[n

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

转载自http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html 这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>下面是以前的笔记    与之完全相反的函数还有prev_permutation  (1) int 类型的next_permutation int main(){ int a[3];a[0]=1;a[1]=2;a[2]=3; do{cout<<a[0]<<" &qu

关于全排列 next_permutation() 函数的用法

这是一个c++函数,包含在头文件<algorithm>里面,下面是基本格式. 1 int a[]; 2 do{ 3 4 }while(next_permutation(a,a+n)); 下面的代码可产生1~n的全排列. #include <stdio.h> #include <algorithm> using namespace std; int main(){ int n; while(scanf("%d",&n)&&n){

next_permutation函数 (生成全排列)

这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>下面是以前的笔记    与之完全相反的函数还有prev_permutation  (1) int 类型的next_permutation int main(){ int a[3];a[0]=1;a[1]=2;a[2]=3; do{cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<

C++ STL next_permutation函数

在STL中,除了next_permutation外,还有一个函数prev_permutation,两者都是用来计算排列组合的函数.前者是求出下一个排列组合,而后者是求出上一个排列组合.所谓"下一个"和"上一个",书中举了一个简单的例子:对序列 {a, b, c},每一个元素都比后面的小,按照字典序列,固定a之后,a比bc都小,c比b大,它的下一个序列即为{a, c, b},而{a, c, b}的上一个序列即为{a, b, c},同理可以推出所有的六个序列为:{a,

全排列 next_permutation() 函数的用法

在头文件<algorithm>里面有如下代码: int a[]; do { } while(next_permutation(a,a+n)); 可产生1~n的全排列有如下代码: 1 #include <stdio.h> 2 #include <algorithm> 3 using namespace std; 4 int main(){ 5 int n; 6 while(scanf("%d",&n)&&n){ 7 int a[