递归实现排列型枚举

递归实现排列型枚举


题目不难

#include<iostream>
#include<cstdio>

using namespace std;

bool a[10];
int b[10];
int n;

void work(int x)
{
	if(x==n+1)
	{
		for(int i=1;i<=n;i++)
		//cout<<b[i]<<" ";超时 
		printf("%d ",b[i]);
		//cout<<endl;
		puts("");//相当于换行 
		return ;
	}
	for(int i=1;i<=n;i++)
	{
		if(a[i])continue;
		b[x]=i;
		a[i]=1;
		work(x+1);
		a[i]=0;
	}
	
}
int main()
{
	cin>>n;
	work(1);
	return 0;
	
}
posted @ 2021-09-20 21:10  qbning  阅读(35)  评论(0编辑  收藏  举报
描述