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());
    }

  }
原文地址:https://www.cnblogs.com/blogxjc/p/14290298.html