XidianOJ 1088 AK后的V8
Posted TOTOTOTOTZZZZZ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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个数字拼起来的最大值是多少。
输入
多组数据,请处理到文件结束。每组数据第一行一个数字n(1<=n<=10^5),第二行n个数字ai(0<=ai<=10^8)。
输出
每组数据一行输出,表示其拼起来的最大值。
--正文
对于使用sort函数偷懒的人来说
这题烦人之处是如何输出比较结果,试过c的字符串不太方便,还是用c++的string比较好
#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; }
以上是关于XidianOJ 1088 AK后的V8的主要内容,如果未能解决你的问题,请参考以下文章