美文网首页
A1038 Recover the Smallest Numbe

A1038 Recover the Smallest Numbe

作者: km15 | 来源:发表于2020-02-02 13:52 被阅读0次

    // A1038 Recover the Smallest Number (30分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    /*
    题意:
    1、给一些数字,组合一下,组个出个最小数字
    注意:第一个数字不要为0

    32小于321

    解题:
    1、k1 + k2 < k2 + k1,那么就把k1放在k2前面,但是用cmp如何实现呢
    2、

    learn && wrong:
    1、k1 + k2 < k2 + k1,那么就把k1放在k2前面,但是用cmp如何实现呢
    2、去掉前导的0如何实现呢,
    ans[0] == 0,就查处,并且条件还有ans.size() != 0。之后再加个判断,如果size为0了,就直接为0
    3、cmp函数的机制真的要理解下,并且sort,可以用于string,盲猜是不等式成绩,就按不等式的排列,不成立false,就返回相反的
    4、erase()函数,是用迭代器,也就是ans.begin()
    */

    #include <string>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    const int maxn = 10010;
    string str[maxn];
    
    bool cmp(string a, string b) {  //(!!!)
        return a + b < b + a;//如果a + b < b + a,就把a排在前面,反正就是小于号
    }
    
    int main()
    {
        int num;
        cin >> num;
        for (int i = 0;i < num;++i) {
            cin >> str[i];
        }
    
        sort(str, str + num, cmp); //(!!!)
    
        string ans;
        for (int i = 0;i < num;++i) {
            ans += str[i];
        }
    
        while (ans.size() != 0 && ans[0] == '0') {///(!!!)
            ans.erase(ans.begin());
        }
    
        if (ans.size() == 0) cout << "0" << endl;
        else cout << ans << endl;
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:A1038 Recover the Smallest Numbe

          本文链接:https://www.haomeiwen.com/subject/cvqqxhtx.html