第十六届蓝桥杯康复训练--2
题目链接:94. 递归实现排列型枚举 - AcWing题库
思路:和康复训练第一题差不多,就是注意可以乱序,也就是不用限制从自身开始递归,func中的num改成n也是一样的,懒得删了
代码:
#include<bits/stdc++.h>
using namespace std;
#define N 100010
int n;
bool vis[N];
vector<int> paths;
map<vector<int>,bool> mp;
void func(int u,int num){
if(paths.size()==num){
for(auto it:paths){
cout<<it<<" ";
}cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(vis[i])continue;
paths.push_back(i);
vis[i]=true;
func(i,num);
paths.pop_back();
vis[i]=false;
}
}
void solve(){
cin>>n;
func(1,n);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int t=1;
// cin>>t;
while(t--){
solve();
}
return 0;
}