题目来源:[NOIP1998 提高组] 拼数 - 洛谷
解题思路:这道题重点在于怎么把数字拼接,得到最大的值。这里可以用to_string()函数,将数字先转换为字符再拼接,最后得到拼接的最大值。ps:需要考虑两个相邻字符的前后两种拼接方式,ab,ba。
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>using namespace std;bool cmp(const int& a, const int& b)
{// 将数字转换为字符串,以便进行拼接string ab = to_string(a) + to_string(b);string ba = to_string(b) + to_string(a);// 比较拼接后的字符串return ab > ba;}int main()
{int n;cin >> n;vector<int>a(n);//读取每个数字for (int i = 0; i < n; i++){cin >> a[i];}// 使用自定义的比较函数进行排序sort(a.begin(), a.end(), cmp);// 输出结果for (int b : a){cout << b;}cout << endl;return 0;
}