從1到n的全排列(深度優先搜尋)

lsy同學發表於2020-11-22

不撞南牆不回頭

#include<bits/stdc++.h>
using namespace std;
int n,book[50],a[50];

void dfs(int step)
{
	if(step==n+1)
	{
		for(int i=1;i<=n;i++)
		cout<<a[i];
		cout<<endl;
		return ;
	}
	
	for(int j=1;j<=n;j++)
	{
		if(book[j]==0)
		{
			book[j]++;
			a[step]=j;
			dfs(step+1);
			book[j]=0;
		}
	}
}

int main()
{
	cin>>n;
	dfs(1);
	return 0;	
} 

在這裡插入圖片描述

相關文章