XidianOJ 1088 AK后的V8

题目描述

公元20XX年X月X日,V8和他的小伙伴们又一次早早地AK(all kill)了,善良的V8为了避免伤害其余蒟蒻们的心,纵使AK了也不提早离场,可是因为电脑被他的两个大神队友拿来玩五子棋(组队赛三人一台电脑),V8只能一我的无聊的在草稿纸上乱画,当V8由于思念过分画挫了某人的头像时,吓得V8立刻写了三个数字,3,2,3,这时,机智的V8突然发现:这三个数字拼起来最大是332!而不是233!!!无聊的V8又写下两个数字,97,98,而后V8发现其最大值是9897而不是9798。如今无聊的V8写下了n个数字,V8想知道这n个数字拼起来的最大值是多少。ios

 

输入

多组数据,请处理到文件结束。每组数据第一行一个数字n(1<=n<=10^5),第二行n个数字ai(0<=ai<=10^8)。c++

 

输出

每组数据一行输出,表示其拼起来的最大值。函数

--正文spa

对于使用sort函数偷懒的人来讲code

这题烦人之处是如何输出比较结果,试过c的字符串不太方便,仍是用c++的string比较好blog

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
string s[100001];
bool cmp(string a,string b){
    string s1 = a + b,s2 = b + a;
    return (s1 > s2);
}

int main(){
    int n;
    while (scanf("%d",&n) != EOF){
        int i;
        for (i=0;i<n;i++){
            cin >> s[i];            
        }
        sort(s,s+n,cmp);
        for (i=0;i<n;i++){
            cout << s[i];
        }
        printf("\n");
    }
    return 0;
}
相关文章
相关标签/搜索