全排列
对输入的n个数做全排列
样例输入
3
1 2 3
输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
/*
1...n全排列,不计算是否有重复
*/
#include<cstdio>
#include<string.h>
using namespace std;
const int maxn = 100;
int rcd[maxn],num[maxn],vis[maxn];
int n;
int input(){
if(scanf("%d",&n)==EOF)
return 0;
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
return 1;
}
void full_permutation(int l){
int i;
if(l==n){
for(int i=0;i<n;i++){
printf("%d",rcd[i]);
if(i<n-1)
printf(" ");
}
printf("\n"); return ;
}
for(int i=0;i<n;i++){
if(!vis[i]){
rcd[l]=num[i];
vis[i]=1;
full_permutation(l+1);
vis[i]=0;
}
}
}
int main(){
while(input())
full_permutation(0);
return 0;
}
Knowing others is intelligence; Knowing yourself is true wisdom
浙公网安备 33010602011771号