本文共 1027 字,大约阅读时间需要 3 分钟。
给定数字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]--; } } }}
转载地址:http://qdlzi.baihongyu.com/