1023. 组个最小数 (20)

给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

现给定数字,请编写程序输出能够组成的最小的数。

输入格式:

每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。

输出格式:

在一行中输出能够组成的最小的数。

输入样例:

2 2 0 0 0 3 0 0 1 0

输出样例:

10015558
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()
 5 {
 6     int cnt[11];  //数字个数
 7     int i;
 8     for( i=0; i<10; i++)
 9     {
10         scanf("%d",&cnt[i]);
11     }
12     for( i=1; i<10; i++)
13     {
14         if( cnt[i]!=0)  //找到第一位不为0的数先输出
15         {
16             printf("%d",i);
17             cnt[i]--;
18             break;
19         }
20     }
21     for( i=0; i<10; i++)
22     {
23         while( cnt[i]--)
24             printf("%d",i) ;
25     }
26     return 0;
27 }