题目:
当n=3时,全排列为123 132 213 231 312 321
现给定一个n,输出他的全排列
解题办法:
设置一个数组p用来存放当前的全排列;再设定一个散列数组hashTable,其中hashTable当整数x已经在p中的时候为true。
#include<iostream>
using namespace std;
int n;
int p[100],hashtable[100]={false};
void all(int t)
{
if(t==n+1) //递归边界,输出排序完的列
{
for(int i=1;i<=n;i++)
cout<<p[i];
cout<<endl;
}
else
{
for(int i=1;i<=n;i++)
{
if(hashtable[i]==false) //如果i不在p[0]~p[n]中
{
p[t]=i; //将i标记在p里面
hashtable[i]=true;
all(t+1); //递归处理p的第t+1位
hashtable[i]=false; //递归完成后,还原状态
}
}
}
}
int main()
{
cin>>n;
all(1);
return 0;
}