码迷,mamicode.com
首页 > 编程语言 > 详细

C语言实现全排列

时间:2018-08-28 17:06:37      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:pac   ++   lap   ide   深度遍历   closed   标记   c语言   分享图片   

一、递归实现全排列

技术分享图片
 1 #include"cstdio"
 2 int A[50];
 3 void print_permutation(int n,int *A,int cur){
 4         if(cur==n){
 5         for(int i=0;i<n;i++)
 6             printf("%d",A[i]);
 7         printf("\n");
 8         }
 9         else for(int j=1;j<n+1;j++){
10         int ok=1;
11         for(int k=0;k<cur;k++)
12             if(A[k]==j)
13                 ok=0;
14             if(ok){
15             A[cur]=j;
16             print_permutation(n,A,cur+1);
17             }
18         }
19     }
20 int main(){
21     int n;
22     scanf("%d",&n);
23     print_permutation(n,A,0);
24     return 0;
25 }
View Code

 

二、解答树

技术分享图片
 1     #include <string.h>
 2     #include <iostream>
 3      
 4     using namespace std;
 5     const int N = 99999999;     //输入排序的个数的最大值
 6     int record[N];              //记录每次排序的序列
 7     int visited[N];             //标记节点是否被访问过
 8     int n;                      //输入节点的数目
 9     int totalSize = 0;
10     void DFS(int start){
11         if(start>=n){           //递归出口
12             for(int i=0;i<n;i++){
13                 cout<<record[i]<<" ";
14             }
15             totalSize++;
16             cout<<endl;
17             return;
18         }
19         for(int i=1;i<=n;i++){      //深度遍历节点,并标记已经访问过的节点
20             if(visited[i]==0){
21                 visited[i] = 1;
22                 record[start] = i;
23                 DFS(start+1);       //递归遍历
24                 visited[i] = 0;     //回退时标记回退的节点为未被访问节点
25             }
26         }
27     }
28      
29     int main()
30     {
31         cin>>n;
32         memset(visited,0,n);
33         DFS(0);
34         cout<<"totalSize = "<<totalSize<<endl;
35         return 0;
36     }
View Code

三、

调用next_permutation()方法

C语言实现全排列

标签:pac   ++   lap   ide   深度遍历   closed   标记   c语言   分享图片   

原文地址:https://www.cnblogs.com/tao7/p/9549184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!