n个整数拼接成最大的整数(结果的位数可能会很大)

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>

using namespace std;

bool Compare(const string &a, const string &b)
{
    return ((a+b) > (b+a));
}

void GetResult(vector<int> vNums, string &strRlt)
{
    strRlt = "";
    vector<string> vec;
    for(auto num : vNums)
    {
        stringstream ss;
        string str;
        ss << num;
        ss >> str;
        vec.push_back(str);
    }
    sort(vec.begin(), vec.end(), Compare);
    for(auto v : vec)
        strRlt += v;
}

int main()
{
    int n = 0;
    int x = 0;
    while(cin >> n)
    {
        vector<int> vec;
        string strRlt;
        while(n-- > 0 && cin >> x)
        {
            if(x < 0) return -1;
            vec.push_back(x);
        }
        if(!vec.empty())
        {
            GetResult(vec, strRlt);
            cout << strRlt << endl;
        }
    }
    return 0;
}

 

posted @ 2016-03-29 21:52  AIceCream  阅读(402)  评论(0编辑  收藏  举报