/*************************************************************************
* author:crazy_石头
* algorithm:全排列
* date:2013/09/29
**************************************************************************/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <climits>
#include <algorithm>
using namespace std;
#define N 100005
#define M 400010
#define INF INT_MAX
const int maxn=500;
int a[maxn],temp[maxn],used[maxn],n;
void DFS(int cur,int n)
{
if(cur==n)
{
for(int i=0;i<n;i++)
{
printf("%d ",temp[i]);
}
cout<<endl;
return;
}
else
{
for(int i=0;i<n;i++)
{
if(!used[i])
{
used[i]=1;
temp[cur]=a[i];
DFS(cur+1,n);
used[i]=0;
}
}
}
}
int main()
{
while(cin>>n)
{
for(int i=0;i<n;i++)
cin>>a[i];
memset(used,0,sizeof(used));
DFS(0,n);
}
return 0;
}
此外还可以调用C++的库函数进行全排列操作。。。。