题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=1027
这道题可以使用字典序法求全排列
贴一个链接:http://blog.csdn.net/a510218443/article/details/70552778
#include <stdio.h>
#include <string.h>
int n,m,a[1010];
void perm()
{
int k,p,min,temp,x,i,j;
for(j=1; j<m; j++)
{
for(k=n-1; k>=0; k--)
if(a[k]<a[k+1])
break;
min=2000;
for(i=k+1; i<=n; i++)
if(a[i]>a[k])
if(a[i]<min)
{
min=a[i];
p=i;
}
temp=a[k];
a[k]=a[p];
a[p]=temp;
k=k+1;
x=n;
while(k<x)
{
temp=a[k];
a[k]=a[x];
a[x]=temp;
k++;
x--;
}
if(j==m-1)
{
for(i=1; i<=n; i++)
{
if(i==1)
printf("%d",a[i]);
else
printf(" %d",a[i]);
}
printf("\n");
}
}
}
int main()
{
int i;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=1; i<=n; i++)
a[i]=i;
perm();
}
return 0;
}