描述
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语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复