首页 > 代码库 > 深搜最基础题---全排列

深搜最基础题---全排列

这个是理解标记和取消标记,用一个vis数组来标记

 1 #include <stdio.h> 2  3 int a[100]; 4 int vis[100]; 5 int num;//统计总数  6 void dfs(int n, int cur) 7 { 8     if(n == cur) 9     {10         for(int i = 0; i < n; i++)11             printf("%d ", a[i]);12         printf("\n");13         num++;14         return;15     }16     for(int i = 1; i <= n; i++)17     {18         if(vis[i] == 0)19         {20             vis[i] = 1;//标记 21             a[cur] = i;22             dfs(n, cur + 1);23             vis[i] = 0;//取消标记 24         }25     }26 }27 int main()28 {29     int n;30     while(~scanf("%d", &n))31     {32         num = 0;33         dfs(n, 0);34         printf("sum total: %d\n", num);35     }36     return 0;37 }

 

深搜最基础题---全排列