洛谷链接&CF 链接

本篇题解为此题较简单做法较少码量,并且码风优良,请放心阅读。

题目简述

给你一个均为小写字母的字符串,如果它的子串同时满足:

  1. 三个连着的辅音字母。

  2. 这一段连着的辅音字母不是全部一样的。

就认为它不合法。

现在要求用最少的空格隔开这个字符串,使得它变成合法的。

思路

首先定义记录当前位置是否是元音字母的数组 \(a\),并维护它,如下:

for(int i = 0; i < n; i ++) {
bool flag = false;
for(int j = 0; j < 5; j ++)
if(str[i] == c[j]) flag = true;
a[i] = flag;
}

接着直接根据题目要求模拟即可,定义 \(num\) 记录当前连续辅音字母的个数,当这个个数 \(\ge 3\) 之后输出空格即可,这里需要注意:需要先输出空格再输出字母!

经过以上分析及代码片段,很容易即可写出代码了:

#include<iostream>
using namespace std; char c[10] = {'a', 'e', 'i', 'o', 'u'}; // 元音字母数组
string str;
bool a[3005]; // 记录是否是元音字母 int main(){
cin >> str;
int n = str.length();
// 预处理 a 数组
for(int i = 0; i < n; i ++) {
bool flag = false;
for(int j = 0; j < 5; j ++)
if(str[i] == c[j]) flag = true;
a[i] = flag;
}
int num = !a[0]; // 初始化 num
cout << str[0]; // 先输出第一个字母
for(int i = 1; i < n; i ++) {
// 如果是辅音字母
if(!a[i]) {
num ++; // 增加计数
if(num >= 3 && !(str[i - 2] == str[i] && str[i - 1] == str[i])) {
cout << ' '; // 满足条件输出空格
num = 1; // num 初始化
}
}
else num = 0; // 元音字母
cout << str[i]; // 正常输出
}
return 0;
}

提交记录

\[\text{The End!}
\]

CF858C 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. 一文了解npm install -g和npm install --save-dev的关系

    本文分享自华为云社区<npm install -g 和 npm install --save-dev 的关系>,作者: SHQ5785. 一.npm install 本地安装 将安装包放在 ...

  2. C# Log4net 组件无法写日志 IsDebuged、IsInfoEnabled、IsErrorEnabled 全部为false

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)] 如果 ...

  3. iOS技术管理思路

    iOS技术管理思路

  4. zabbix笔记_007 zabbix 分布式架构

    1. zabbix 分布式架构[服务器数量较大的场景下使用] 现有架构: agent --> zabbix server proxy架构: agent --> zabbix proxy - ...

  5. block专递参数导致野指针引发crash

    一.问题引入 近日开发中引入一个随机crash,Crash堆栈如下: Exception Type: SIGSEGV Exception Codes: SEGV_ACCERR at 0x0000000 ...

  6. NOIP模拟82

    T1 魔法 解题思路 发现选择情况无非就是两种,连续的一段或者间隔为 \(R+B\) 的倍数的一段. 直接对于原序列贪心,每次选择可以消除的部分并将其删掉. 对于合法的情况将操作倒序输出即可. cod ...

  7. 你知道键盘是如何工作的吗?(xv6键盘驱动程序)

    键盘驱动程序 公众号:Rand_cs 键盘如何工作的前文曾经说过,当时是以 Linux 0.11 为基础讲的但不系统,本文以 xv6 的键盘驱动程序为例来系统地讲述键盘是如何工作的.关于驱动程序前文磁 ...

  8. Windows SERVER 新建FTP 服务器

    Windows SERVER 新建FTP 服务器 FTP主机上的操作(本机IP为:192.168.137.2): 1.新建一个名为 ftpa 的Windows用户. 2.在D盘新建一个 FtpBook ...

  9. 使用 OpenTelemetry 构建可观测性 02 - 埋点

    这是讲解 OpenTelemetry 系列博客的第二篇.在上一篇博客中,我们介绍了 OpenTelemetry 是什么以及由什么组成.现在我们将讨论如何使用 OTel 准确收集遥测数据和链路追踪数据. ...

  10. 燕千云ITAM:解锁数字化时代下企业竞争新优势

    数字化时代下,企业的IT资产管理(ITAM)尤为关键.企业通过在成长的每个阶段实施有效的IT资产管理策略,以确保资源的最优化利用和风险的有效控制,并在竞争激烈的市场环境中保持优势.然而实际实践中,企业 ...