P1321 单词覆盖还原
带点小思维
首先,这题的意思就是boy,girl,。这三个单词会相应覆盖,但每个单词至少有一个单词不会被覆盖,那我们观察这三个单词发现,其里面每个字符都没有重复的,也就是说,假设我看到了一个o,那很明显就是boy的,假如看到一个l,那就是girl的,由于我们不知道每个字符被覆盖前是啥字符,那我们可以假设从某个字符开始连着的三个字符串是boy,或者从某个字符开始连着的四个字符串是girl,(因为被覆盖后girl可能会变成g,gi,irl等各种形式,而假设从某个点开始就是girl则包含了这里的所有可能),例..o...y..i.l.gi...r那我们先假设某个下标开始有连着的三个字符boy,那从0下标开始往后遍历,当i便利到1的时候,i+1的位置出现了字符o,那就证明b和y被覆盖了,而遍历到四的时候i+2出现了字符y,说明这个单词boy的bo被覆盖了,有点抽象,自己理解一下,可以在这个样例推一下girl的的情况
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int b, g;
int main()
{
string s;
cin >> s;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == 'b' || s[i + 1] == 'o' || s[i + 2] == 'y') // 只要这三个单词里有任何一个位置满足了b、o、y,就说明这个单词下覆盖了boy,girl同理
b++;
if (s[i] == 'g' || s[i + 1] == 'i' || s[i + 2] == 'r' || s[i + 3] == 'l')
g++;
}
cout << b << '\n'
<< g;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理