题目来源
题目描述
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:
给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
现给定数字,请编写程序输出能够组成的最小的数。
题目解析
该题目的输入数据是由 10 个数字组成,表示 0 - 9 出现的次数,组成最小数满足下面条件即可:
1)除0以外1-9中按照从小到大的顺序,将最小的数字输出1次
2)输出所有出现的0
3)输出1-9中按照从小到大的顺序,将每个数子输出出现的次数(第一位输出的数字会在第一次输出的时候减去1)
解题代码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int[] a=new int[10];
//输入这十个数字出现的次数
for(int i=0;i<10;i++){
a[i]=sc.nextInt();
}
//输出1-9第一个数字一次
for(int i=1;i<10;i++){
if(a[i]!=0){
System.out.print(i);
a[i]--;
break;
}
}
//第二位输出0
while(a[0]!=0){
System.out.print(0);
a[0]--;
}
//最后按照1-9的顺序输出
for(int i=1;i<10;i++){
while(a[i]!=0){
System.out.print(i);
a[i]--;
}
}
}
}