给定0-9数字各若干个,以任意顺序排列这些数字,使得最后得到的数尽可能小(0 不能做首位)。
在一行中给出 10 个非负整数,顺序表示数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。
输出
在一行中输出能够组成的最小的数。
输入
2 2 0 0 0 3 0 0 1 0
表示有2个0,2个1,3个5,1个8;
输出
10015558
#include<stdio.h>
int main(void){
int A[10];
int i,j;
for(i=0;i<10;i++){
scanf("%d",&A[i]);
}
for(i=1;i<10;i++)
{
if(A[i]!=0)
{
printf("%d",i); //先找到第一个非零的数,并让它当第一位,并且它的数量减一//
A[i]--;
break;
}
}
for(j=0;j<10;j++) {
if(j!=1){
while(A[j]!=0){
printf("%d",j); //然后从最小的开始依次排下去//
A[j]--;
}
}
else{
while((A[j]-1)!=0){
printf("%d",j);
A[j]--;
}
}
}
}