TEMPLATE3. Permutations
组合,可以乱序。所以,需要记录哪些数用过了。每次递归时,选用第一个没用过的数。
注意回溯时清空标记。
// TEMPLATE3. Permutations
#include <bits/stdc++.h>
#define int long long
#define SIZE 200010
#define all(x) x.begin(), x.end()
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
int n;
int a[SIZE], b[SIZE]={0};
void Solve(int k=0)
{
if(k==n)
{
for(int i=0; i<n; i++) cout<<a[i]<<" ";
cout<<endl;
return;
}
for(int i=1; i<=n; i++)
if(!b[i])
{
b[i]=1; a[k]=i;
Solve(k+1);
b[i]=0;
}
}
signed main()
{
cin>>n;
Solve();
return 0;
}
标签:TEMPLATE3,排列,Permutations,long,乱序,define
From: https://www.cnblogs.com/jerrywang2009/p/16819453.html