专栏文章
B4069 [GESP202412 四级] 字符排序
B4069题解参与者 26已保存评论 28
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 28 条
- 当前快照
- 1 份
- 快照标识符
- @miqsd402
- 此快照首次捕获于
- 2025/12/04 09:57 3 个月前
- 此快照最后确认于
- 2025/12/04 09:57 3 个月前
欢迎报名洛谷网校,期待和大家一起进步!
本题考查字符串、排序和贪心。
本题的核心突破口在于小杨要求满足的条件:
假设 为字符串 的第 个字符,对于所有的 均有 。两个字符的大小关系与其在字母表中的顺序一致,例如 。
这个条件要求了最后的字符串 ,所有字母应当是从小到大排列的,例如说最后的字符串一定是像 (所有字母从小到大排列)的样子,而不是像 的样子。
因此考虑将读入的每个字符串 从小到大排列,然后拼接在一起组成字符串 。在 C++ 语言中,字符串的比较是根据字典序进行排列的,因此相对较小的字符串,例如说 会出现在 这个更大的字符串前面。由此,我们就得到了尽可能让小的字母出现在字符串前面,大的字母出现在字符串后面的 。随后,我们判断 的所有字母是否是从小到大排列的,即可完成本题。
参考代码(部分):
CPP//省略:将 s[i] 从小到大排序
for (int i = 1; i <= n; i++)
t += s[i];
bool flag = true;
for (int i = 0; i < (int)t.length() - 1; i++) {
if (t[i] > t[i + 1])
flag = false;
}
相关推荐
评论
共 28 条评论,欢迎与作者交流。
正在加载评论...
