题解 P1321 【单词覆盖还原】

· · 题解

超超超超级水的一道大水题

让我这个蒟蒻来讲讲~

无非就是在给出的字符串中找出有连着的b、o、y或是g、i、r、l的部分,用个循环逐个判断就能找出所有情况。

我们应该充分利用计算机能重复计算的功能!!!

不晓得为什么那么多大佬会卡在数据点上

其实做题的时候思维简单点就好了,想得越多越会将自己的思维方向带偏!

感觉自己的代码是这些里边最简短的了~

来了老弟~

#include<bits/stdc++.h>//c++万能头文件 
using namespace std;//命名空间~ 
int main() {//主函数 
    int boy=0,girl=0;//boy和girl用来记下各自的个数 
    string st;//定义题目给出的字符串 
    cin>>st;//这个我们校长都能看得懂的输入~ 
    for(int i=0;i<=st.length();i++){//开始发挥计算机的强大功能!
//st.length()为读取字符串长度的函数,c++中最好用string头文件,这里我就直接用万能头文件了~ 
        if (st[i]=='b'||st[i+1]=='o'||st[i+2]=='y')//判断连着的三个字母是否为b、o、y 
            boy++;//boy计数器加一 
        if (st[i]=='g'||st[i+1]=='i'||st[i+2]=='r'||st[i+3]=='l')//判断连着的三个字母是否为g、i、r、l 
            girl++;//girl计数器加一 
    }
    cout<<boy<<endl;//输出boy的个数  换行~ 
    cout<<girl<<endl;//输出girl的个数 
    return 0;//愉快地结束程序~~~~ 
}

管理员大佬求过求过!!!