美文网首页
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