全排列
/*
全排列
时间复杂度比较大
*/
#include<iostream>
#define MAX 15
using namespace std;
int a[MAX];//保存排列的数组
int b[MAX];//记录元素是否被用过
void all(int i,int k,int n)
{
if(k>n)
return ;
a[k]=i;
b[i]=1;
if(k==n)
{
for(int j=1;j<=n;j++)
{
cout<<a[j]<<' ';
}
cout<<endl;
}
for(int j=1;j<=n;j++)
{
if(b[j]==0)
all(j,k+1,n);
}
b[i]=0;
}
int main()
{
int n;
cin>>n;
if(n>=MAX)
{
cout<<"数据量过大"<<endl;
}
else
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
b[j]=0;
all(i,1,n);
}
return 0;
}