首页 > 代码库 > 全排列

全排列

对输入的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;}

  

全排列