您的位置:首页 > 其它

全排列

2016-03-27 11:19 288 查看

求1--m的n位数的全排列

输入数据为:T(数据组数),m,n

exp:

输入:1 3 2

输出:

32

31

23

21

13

12

#include<stdio.h>

#include<string.h>

#define max 10000

int biaoji[max];//标记数组

int a[max];//放入数据

void dfs(int m,int n,int k)//m:1到m n:n位数 k:表示第K位数

{

int i;

if(k==n)

{

for(int j=0;j<n;j++)

printf("%d",a[j]);

printf("\n");return;

}

for(i=m;i>=1;i--)//我是从大到小的全排列,根据需求自己调整

{

if(biaoji[i]==0)

{

a[k]=i; //将数据放进数组,方便输出

biaoji[i]=1;//数据被使用加上标记

dfs(m,n,k+1);

biaoji[i]=0;//回退的时候再把标记解除

}

}

return;

}

int main ()

{

int T;

int m,n;

scanf("%d",&T);

while(T--)

{

memset(biaoji,0,sizeof(biaoji));

memset(a,0,sizeof(a));

scanf("%d%d",&m,&n);

dfs(m,n,0);

}

return 0;

}

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