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

猜你喜欢

转载自blog.csdn.net/qq_41044665/article/details/80555275