递归全排列

 1 //
 2 // Created by Arc on 2020/5/1.
 3 //其实有一个伟大的函数叫next_permutation(arr, arr+size)也是全排列
 4 //下面展示一下代码
 5 #include <bits/stdc++.h>
 6 using namespace std;
 7 int a[1001]={0};
 8 bool b[100]={0};
 9 int num=0;//全局变量,总个数
10 void search(int);
11 void print();
12 int n;
13 int main(){
14 cin>>n;
15 search(1);
16 cout<<num;
17 
18 }
19 void search(int t){
20     for(int i=1;i<= n ;i++){//每种情况的遍历
21         if(!b[i]){//如果没有被用过
22             a[t]=i;//赋值
23             b[i]=1;//标记用过
24             if(t==n)
25                 print();
26             else
27                 search(t+1);
28             b[i]=0;//递归不下去了才会回到这一步,所以这一步就是释放状态的
29 
30         }
31     }
32 }
33 void print(){
34     num++;
35     for(int i=1;i<=n;i++){
36         cout<<a[i]<<" ";
37     }
38     cout<<"\n";
39 }

猜你喜欢

转载自www.cnblogs.com/zhmlzhml/p/12813794.html
今日推荐