ECNU 3530 和你在一起
ECNU 3530 和你在一起
链接
https://acm.ecnu.edu.cn/problem/3530
题目
单点时限: 1.0 sec
内存限制: 256 MB
我想和你在一起
直到我不爱你
宝贝 人和人 一场游戏
我愿意为你死去
如果我还爱你
宝贝 反正活着 也没意义
宝贝 我也只能 这样为你
——李志《和你在一起》
现场4分10秒,小哥跟着逼哥嘶吼,泪流满面。我要和你在一起,直到我不爱你。有这么 个数字,联成一排拼到一起便是我爱你的时间,那么我们会在一起多久呢
例如: n=3 时,3 个整数 13,312,343 联接成的最长时间为: 34331213。
又如: n=4 时,4 个整数 7,13,4,246 联接成的最长时间为: 7424613。
输入格式
n(1-20),表示n个数。
接下来一行 . 个正整数,大小不超过 10^4。
输出格式
拼成的最长时间。
样例
input
3
623 583 413
output
623583413
思路
看题泪目(并没有)
这主要就是一个排序方法,拿123和456为例子,123456<456123,所以要长的话,那就要456在前面,这就是一类比较,如果加上了789,那就可以知道789应该在最前,为789456123即可。即为a+b < b+a。
这里还是用了java,不过采用了ArrayList,用比较器排序,用迭代器输出即可。
代码
public static void fun() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
ArrayList<String> list = new ArrayList<>(n);
for (int i = 0; i < n; i++) {
String temp = sc.next();
list.add(temp);
}
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String str1 = o1 + o2;
String str2 = o2 + o1;
return Integer.valueOf(str2) - Integer.valueOf(str1);
}
});
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.print(it.next());
}
}