nomansky:用编程实现排列

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 05:32:15
用编程实现一组数的排列。
例如:123 输出:
123
132
213
231
312
321

#include<stdio.h>
void Input(int t);
int b[20],a[20],n,flag;
void main()
{
int i,j,m,Number,min;
printf("InPut A Number: ");
scanf("%d",&Number);
flag=0;
if(Number<0)
{
flag=1;
Number=-Number;
}
/*n是控制输入数值的位数的*/
for(n=0;Number&& n<20;n++)
{
a[n]=Number%10;
Number/=10;
}
/*对输入的数每一位排序*/
for(i=0;i<n-1;i++)
{
min=a[i];
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
m=a[j];
a[j]=a[i];
a[i]=m;
}
}
}
for(i=0;i<20;i++) b[i]=-1;
if(n)Input(0);
getch();
}
void Input(int t)
{
int i,j;

for(i=0;i<n;i++)
{
if(b[i]==-1)
{
b[i]=a[t];
if(t>=n-1)
{
if(flag)printf("\n-");
for(j=0;j<n;j++)
printf("%d ",b[j]);
}
else
Input(t+1);
b[i]=-1;
}/*if*/
}/*for*/
}
可以随意输入,位数小于20的数..

建立数组,交换排列