CF858C 题解
本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。
题目简述
给你一个均为小写字母的字符串,如果它的子串同时满足:
三个连着的辅音字母。
这一段连着的辅音字母不是全部一样的。
就认为它不合法。
现在要求用最少的空格隔开这个字符串,使得它变成合法的。
思路
首先定义记录当前位置是否是元音字母的数组 \(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;
}
\]
CF858C 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- winform 关于无边框和拖动窗体边缘改变尺寸的 踩坑笔记
在做美化winform窗体,实现自定义窗体标题栏,圆角边框,并且支持拖拽窗体,最后还要能拖动窗体左.右.下边缘时,改变窗体的宽和高. 一般网上的都有代码,窗体设成无边框,自己加个panel就能实现自定 ...
- Django - 在后台上传文章封面图 - 并在前端页面展示
需要用到 models.ImageField(), 它继承自 models.FileField(), 用ImageField的时候需要安装pillow pip install pillow -i h ...
- CSS操作——列表属性
CSS中提供了一些列表属性可以用来: (1).设置不同的列表项标记为有序列表 (2).设置不同的列表项标记为无序列表 (3).设置列表项标记为图像 list-style-type(系统提供 ...
- 任务Task系列之使用CancellationToken取消Task
本文参考书籍<CLR via C#> Task的取消采用一种形如令牌(Token)的方式.首先先构建一个CancellationTokenSource实例,然后任务中执行的方法必须能接受一 ...
- 用python字典统计CSV数据
1.用python字典统计CSV数据的步骤和代码示例 为了使用Python字典来统计CSV数据,我们可以使用内置的csv模块来读取CSV文件,并使用字典来存储统计信息.以下是一个详细的步骤和完整的代码 ...
- [SWPUCTF 2021 新生赛]include
打开我们可以看到让我们传入一个file,会出现一串代码,我们去分析一下: 当看到ini_set("allow_url_include","on");设置为on, ...
- kettle从入门到精通 第二十一课 kettle Carte服务器
1.相关配置文件 jdbc.properties保存在simple-jndi目录下,这个文件用来存储JNDI连接对象的连接参数.Kettle可以用JNDI的方式来引用JDBC连接参数,如IP地址.用户 ...
- EF 字段 4位小数 四位小数
默认情况下只能保存2位小数.如果有字段需要4位小数则: 在OnModelCreating方法中添加一行: modelBuilder.Entity<SissMerchantBillRate> ...
- Jmeter进行HTTPS接口压测及SSL证书验证
一.前言 使用JMeter压测HTTPS接口比较简单,只需要预先处理SSL证书认证,后面就是压测HTTP接口的通用步骤. HTTPS连接证书来验证浏览器和WEB服务器之间的连接.通过HTTP连接时,服 ...
- # android studio启动虚拟机长时间无响应,无法启动
问题 虚拟设备长时间不响应,无法启动设备 方案 根据 android studio启动虚拟器失败 尝试删除锁文件 失败,.android 目录下不存在锁文件 电脑内存或计算配置不足 查看了模拟器需要的 ...