#include<stdio.h> /* 变量说明:a[]-->相当于一个盒子 book[]-->用于标记 n-->1~n个数的全排列 */ int a[10],book[10],n; void dfs(int step) { if(step>n){ // 退出条件 当盒子数 > n时 for(int i=1;i<=n;i++) printf("%d",a[i]); printf("\n"); return; } for(int i=1;i<=n;i++){ if(book[i]==0){ a[step]=i;// 放入盒子 book[i]=1;// 标记这个牌已经走过 dfs(step+1);// 继续下一个盒子 book[i]=0;// 取消标记 } } } int main() { scanf("%d",&n); dfs(1); return 0; }
1~n的全排列(深度优先搜索dfs)
猜你喜欢
转载自blog.csdn.net/qq_41044665/article/details/80555275
今日推荐
周排行