您的位置:首页 > 其它

【codeforces 434 div 1 A】Did you mean...

2017-10-04 18:44 405 查看

【链接】h在这里写链接


【题意】


让你维护一段序列。 这段序列,不会出现连续3个以上的辅音。 (或者一块全是辅音则也可以) (用空格可以断开连续次数); 要求空格最小。

【题解】


模拟着,别让它出现连续三个辅音就好。 不到万不得已不加空格。 按照这个原则去贪心。

【错的次数】


0

【反思】


在这了写反思

【代码】

#include <bits/stdc++.h>
using namespace std;

const int N = 3e3;

int n;
int a[N+10],is[400];
char s[N + 10];

int main() {
//freopen("F:\\rush.txt", "r", stdin);
ios::sync_with_stdio(0), cin.tie(0);
is['a'] = is['e'] = is['i'] = is['o'] = is['u'] = 1;
cin >> (s+1);
n = strlen(s + 1);
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (!is[s[i]]) {
cnt++;
if (cnt >= 3) {
bool ok = true;
int j = max(1, i - 2);
for (int k = j; k <= i - 1; k++)//前面的3个都和它一样吗
if (s[k] != s[i])
ok = false;
if (ok)//如果是的话
{
cout << s[i];
int k = i;
while (k + 1 <= n && s[k + 1] == s[i]) {//往后一直找和它一样的
k++;
cout << s[k];
}
cnt = 2;
i = k;//cnt变成2了,指向下一个。
}
else {//不是的话。只能分割了。
cout << ' '<<s[i];
cnt = 1;
}
}
else {
cout << s[i];//没3个
}
}
else {//是元音直接输出
cout << s[i];
cnt = 0;
}
}
//连续出现
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐