题目
输入一个正整数n(n<50),输出它的全排列。例如输入3,则输出123 132 213 231 312 321.
#include <iostream>
#define MAX 50
using namespace std;
int n,p[MAX],hashtable[MAX]={false}; //hashtable用来标记数字是否被取过
void generate(int index)
{
if(index==n+1)
{
for(int i=1;i<=n;i++)
cout<<p[i];
cout<<endl;
return ;
}
for(int i=1;i<=n;i++)
{
if(hashtable[i]==false) //如果该数字未被使用过
{
p[index]=i;
hashtable[i]=true; //标记为已经取过
generate(index+1); //进行取下一位
hashtable[i]=false; //还原状态
}
}
}
int main()
{
cin>>n;
generate(1); //从第一位开始进行排列
return 0;
}