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 }