zoukankan      html  css  js  c++  java
  • 【codeforces 434 div 1 A】Did you mean...

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


  • 相关阅读:
    第四章 源代码的下载和编译 心得笔记
    第三章 Git使用入门 心得笔记
    第二章 搭建Android开发环境 心得笔记
    第一章 Android系统移植与驱动开发概述 心得笔记
    第十章
    第九章
    第八章
    第七章
    第六章
    第五章的体会
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626003.html
Copyright © 2011-2022 走看看