描述
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 人评分
亲和的解法浏览:1102 |
点我有惊喜!你懂得!浏览:1392 |
Pascal三角 (C语言代码)格式错误浏览:550 |
C语言训练-阶乘和数* (C语言代码)-------- 呆板写法浏览:1396 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:541 |
三角形 (C++代码)递归(存在大量重复计算,容易出现时间超限)浏览:836 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:751 |
打印十字图 (C语言代码)浏览:2820 |
矩阵加法 (C语言代码)浏览:1768 |
The 3n + 1 problem (C语言代码)浏览:550 |