题目链接: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;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |