next_permutation()用法
作者:
巷港
,
2022-03-09 23:01:25
,
所有人可见
,
阅读 231
用next_permutation()注意事项
1、一般用数组储存排列的情况
2、求排列时需要确保数组有序,一般手动构造第一个排列情况,或者sort()一下,确保数组初始化有序
3、一般的模板
`do
{
//需要的操作,比如输出排列情况
for (int i=0;i<n;i++) cout<<nums[i]<<" ";
puts("");
}while (next_permutation(nums,nums+n);
`
求1~n的全排列情况
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 10;
int nums[N];
int n;
int main()
{
cin>>n;
for (int i=0;i<n;i++) nums[i]=i+1;
do
{
for (int i=0;i<n;i++) cout<<nums[i]<<" ";
puts("");
}while (next_permutation(nums,nums+n));
return 0;
}
求解m~n的全排列
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100;
int nums[N];
int main()
{
int m,n;
cin>>m>>n;
for(int i=0,j=0;i<=n-m;i++,j++) nums[i]=m+j; //初始化为m,m+1,m+2...,n
do
{
for(int i=0;i<=n-m;i++) cout<<nums[i]<<' ';
puts("");
}while(next_permutation(nums,nums+n-m+1));//对数组nums中下标0~n-m的数进行全排列
return 0;
}