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;
}
相關文章
相關標籤/搜索