全排列(C/C++)(DFS)

#include <bits/stdc++.h>
using namespace std;

int a[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
bool vis[20];
int b[20];
int n;
void dfs(int s)
{
	if(s==n)
	{
		for(int i=0;i<n;i++)
		{
			cout<<b[i]<<' ';
		}
		cout<<endl;
		return;
	}
	for(int i=0;i<n;i++)
	{
		if(!vis[i])
		{
			vis[i]=true;
			b[s]=a[i];
			dfs(s+1);
			vis[i]=false;
		}
	}
	return;
}

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

猜你喜欢

转载自blog.csdn.net/m0_71934846/article/details/128721334