递归全排列

Posted zhmlzhml

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归全排列相关的知识,希望对你有一定的参考价值。

 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<<"
";
39 }

 

以上是关于递归全排列的主要内容,如果未能解决你的问题,请参考以下文章

全排列的代码 (递归写法)

递归实现全排列

python非递归全排列

递归全排列

全排列

全网最简洁全排列源代码(递归)