1~n的全排列(深度優先搜索dfs)

#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;
} 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章