#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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.