您的位置:首页 > 其它

全排列

2016-02-29 10:09 381 查看
#include<cstdio>
#define MAX 100

void Perm(int a[],int n,int s,int r[],int m)
{
int flag=0,i,k,j;
int b[MAX];
for(i=0;i<n;i++)
{
flag=1;
r[s]=a[i];  //r[]用于存放已经排好的
for(k=0,j=0;k<n;k++)
if(k!=i)
{
b[j++]=a[k];    //存放子序列
}
Perm(b,n-1,s+1,r,m);
}
if(flag==0)
{
printf("\n");
for(k=0;k<m;++k)
printf("%d ",r[k]);
printf("\n");
}
}

int main()
{
int r[MAX],a[MAX];
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
Perm(a,n,0,r,n);
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: