全排列问题

题目描述

输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

这就是全排列问题。

解决方案1:dfs

#include 
#include 
using namespace std;
int a[101],b[101],n;
void print()
{
	int i;
	for(i=1;i<=n;i++)
	{
		cout<>n;
	dfs(1);//开始深搜 
	return 0;
}

解决方案2:C++ STL

#include 
#include 
#define r(a,b,c) for(register int a=b;a<=c;a++)
using namespace std;
int x[11];
int main()
{
	int n;
	scanf("%d",&n);
	r(i,1,n)
	{
		x[i]=i;
		printf("%5d",i);
	}
	while(next_permutation(x+1,x+1+n))
	{
		printf("\n");
		r(i,1,n)
		{
			printf("%5d",x[i]);
		}
	}
	return 0;
}

 

你可能感兴趣的:(搜索----dfs/bfs,搜索,算法之路)