题解 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;//愉快地结束程序~~~~
}
管理员大佬求过求过!!!