1023. 组个最小数

题目截图:

 

思路:

  贪心算法。先找到不是 0 且最小的数输出,然后从小到大依次输出即可。注意:如果可以用 for 循环,那就不要用 while,效率极低。

代码:

 1 /*
 2     1023. 组个最小数
 3 */
 4 
 5 #include <stdio.h>
 6 #include <string.h>
 7 #include <math.h>
 8 #include <stdlib.h>
 9 #include <time.h>
10 
11 int num[10];
12 
13 int main() {
14     int i, j, t;
15     for(i=0; i<10; ++i) {
16         scanf("%d", &num[i]);
17     }
18     for(i=1; i<10; ++i) {    // 找除0之外的最小数 
19         if(num[i]) {
20             break;
21         }
22     }
23     printf("%d", i);        // 输出该数 
24     t = i;                    // 暂时储存次小数 
25     num[i]--;                // 个数-1 
26     for(i=0; i<num[0]; ++i)    printf("0");        // 输出 0 
27     for(i=0; i<num[t]; ++i) printf("%d", t);    // 输出次小数 
28     for(i=t+1; i<10; ++i) {                        // 输出其他 
29         for(j=0; j<num[i]; ++j) {
30             printf("%d", i);
31         }
32         
33     }
34 
35     return 0;
36 }
原文地址:https://www.cnblogs.com/coderJiebao/p/PAT1023.html