专栏文章

题解:P14357 [CSP-J 2025] 拼数 / number

P14357题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minfgc4x
此快照首次捕获于
2025/12/02 01:32
3 个月前
此快照最后确认于
2025/12/02 01:32
3 个月前
查看原文

题目分析

本题要求在给定的字符串中选定数字使得拼出的数最大。
我们可以把字符串中的数字找出来进行处理。

实现细节

首先,我们遍历整个字符串,找出其中所有的数字,代码如下:
CPP
for (int i = 0; i < s.length(); i++)
{
    if (s[i] >= '0' && s[i] <= '9')
        a[++t] = s[i] - 48;
}
接着,为了使拼出的数最大,我们把这些数字从大到小排序。代码如下:
CPP
bool cmp(int a, int b)
{
	return a > b;
}
sort(a + 1, a + t + 1, cmp);
最后,我们依次输出即可。

代码实现

CPP
#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;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...