首页 > 代码库 > 深搜最基础题---全排列
深搜最基础题---全排列
这个是理解标记和取消标记,用一个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 }
深搜最基础题---全排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。