全排列问题是一种编程中常常出现的一个问题。
今天,我来给你们解析一下全排列的常见实现和底层实现。
首先,全排列的常见实现是用一个叫做next_permatition的封装函数。
废话不多说,直接看代码:
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main()
{
int a[11];
int n;
cin >> n;
for(int i=1; i<=n; i++)
a[i] = i;
do
{
for(int i=1; i<=n; i++)
cout << a[i] << " ";
cout << endl;
}while(next_permutation(a+1,a+n+1));
return 0;
}
这是简易的全排列代码,因为运用了next_permatition这个封装函数,把本来复杂的函数简化了。
接下来,我们来看一下全排列的底层实现。
#include<bits/stdc++.h>
using namespace std;
int a[100];
int n;
void swap(int a[],int j,int k);
void reverse(int a[],int j);
int find(int b[])
{
int j,