描述
ACM俱乐部要照大合照了!
"顺序怎么排?"
"按会员编号吗?"
"我们可是学计算机考研的人唉!"
"那么还是以会员编号为依据吧。但是不是单纯按编号大小排列,而是让这些编号连在一起之后组成的那个整数最小。"
输入
输入有多组数据。
每组数据两行。
第一行包含一个正整数n(小于等于10000),代表会员人数。
第二行包含n个正整数(小于等于10000000),代表各会员的编号,编号可能有相同。
输出
对应每组数据,输出一个正整数,这些会员编号连接成的最小的整数。
样例输入1
7
14 36 154 58 36 3 8
9
5534 5226 5636 99956 30 135 35 8 77
样例输出1
1415433636588
135303552265534563677899956
import java.util.*; public class Main { static String[] num; //重写快排 public static void Quicksort(int s, int e) { if (s >= e) return ; int i = s, j = e; String tmp = num[s]; while (i != j) { while (i < j && tmp.concat(num[j]).compareTo(num[j].concat(tmp)) <= 0) j--; String tmp2 = num[i]; num[i] = num[j]; num[j] = tmp2; while (i < j && tmp.concat(num[i]).compareTo(num[i].concat(tmp)) >= 0) i++; tmp2 = num[i]; num[i] = num[j]; num[j] = tmp2; } Quicksort(s, i-1); Quicksort(i+1, e); } public static void main(String args[]){ Scanner input = new Scanner(System.in); while (input.hasNext()) { int n = input.nextInt(); num = new String[10000]; for (int i = 0; i < n; i++) num[i] = input.next(); Quicksort(0, n-1); for (int i = 0; i < n; i++) System.out.print(num[i]); System.out.println(); } } }
0.0分
0 人评分
C语言训练-列出最简真分数序列* (C语言代码)浏览:505 |
C语言训练-立方和不等式 (C语言代码)浏览:749 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:411 |
【绝对值排序】 (C++代码)浏览:672 |
C语言训练-求PI* (C语言代码)浏览:614 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:637 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:486 |
JAM计数法 (C语言代码)浏览:670 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:456 |
【计算球体积】 (C语言代码)浏览:1550 |