题解:P14357 [CSP-J 2025] 拼数 / number
题目传送门
题目分析
本题要求在给定的字符串中选定数字使得拼出的数最大。
我们可以把字符串中的数字找出来进行处理。
实现细节
首先,我们遍历整个字符串,找出其中所有的数字,代码如下:
for (int i = 0; i < s.length(); i++)
{
if (s[i] >= '0' && s[i] <= '9')
a[++t] = s[i] - 48;
}
接着,为了使拼出的数最大,我们把这些数字从大到小排序。代码如下:
bool cmp(int a, int b)
{
return a > b;
}
sort(a + 1, a + t + 1, cmp);
最后,我们依次输出即可。
代码实现
#include <bits/stdc++.h>
using namespace std;
string s;
int a[1000005], t;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
cin >> s;
for (int i = 0; i < s.length(); i++)
{
if (s[i] >= '0' && s[i] <= '9')
a[++t] = s[i] - 48;
}
sort(a + 1, a + t + 1, cmp);
for (int i = 1; i <= t; i++)
cout << a[i];
cout << endl;
return 0;
}