【链接】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;
}