按从小到大的顺序输入四个互不相同的一位数字,能组成多少互不相同且无重复数字的四位数?输出这些四位数
输入格式:
输入就一行,包含4个整数,他们之间均以一个空格分隔。
输出格式:
按照从小到大的顺序输出满足条件的4位数。输出每个数之后需要回车换行。
#include<stdio.h>
int main()
{
int a[4],i=0,j,n=0,b[500];
for(i=0;i<4;i++)
scanf("%d",&a[i]);
int f1,f2,f3,f4;
for(f1=0;f1<4;f1++)
{
for(f2=0;f2<4;f2++)
{
for(f3=0;f3<4;f3++)
{
f4=a[0]+a[1]+a[2]+a[3]-f1-f2-f3;
if(f4>0&&f1!=f2&&f1!=f3&&f1!=f4&&f2!=f3&&f2!=f4&&f3!=f4)
{
b[n++]=a[f1]*1000+a[f2]*100+a[f3]*10+a[f4];
}
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(b[j]>b[j+1])
{
int k=b[j];
b[j]=b[j+1];
b[j+1]=k;
}
}
}
for(i=0;i<n;i++)
{
if(b[i]>999&&b[i]<10000)
printf("%d\n",b[i]);
}
return 0;
}
#include<stdio.h>
int main()
{
int i,j=0,k,h;
int a,b,c,d;
int t[4];
scanf("%d",&t[0]);
scanf("%d",&t[1]);
scanf("%d",&t[2]);
scanf("%d",&t[3]);
int f=0;
int s[10000];
int count=0;
int n;
for(i=0;i<4;i++)
{
a=t[i]*1000;
for(j=0;j<4;j++)
{
b=t[j]*100;
for(k=0;k<4;k++)
{
c=t[k]*10;
for(h=0;h<4;h++)
{
d=t[h];
for(n=9999;n>999;n--)
{
if(n==a+b+c+d)
{
if(i!=j&&i!=k&&i!=h&&j!=k&&j!=h&&k!=h)
{
//printf("%d\n",n);
s[f]=n;
f++;
count++;
}
}
}
}
}
}
}
for(h=0;h<f-1;h++)
{
for(k=0;k<f-1-h;k++)
{
if(s[k]>s[k+1])
{
int tem=s[k];
s[k]=s[k+1];
s[k+1]=tem;
}
}
}
for(h=0;h<f;h++)
{
printf("%d\n",s[h]);
}
//printf("count:%d\n",count);
return 0;
}