病毒感染监测
#include<iostream> #include<string> #include<cstring> using namespace std;//s的第一个字符和t比较,不相等就和第二个比较,如果一旦有不相等的就继续比较,设置一个标记,如果一直没有就更新一下s的顺序 void change(string &s,int &count) { int length; length = s.size(); char a = s[0]; for (int i = 1; i < length; i++) { s[i - 1] = s[i]; } s[length - 1] = a; count++; } bool Judge(string s, string t) { int flag=0; int count=0;//当count比s的长度大的时候,如果依然没找到就输出no; int length = s.size(); int ll = t.size(); while (1) { int i=0, j = 0; int tt = 0; while (j!=ll) { if (s[i] == t[j]) { i++; j++; if (i-1== 0) { tt = j-1; continue; } if (i-1== length - 1) { flag = 1; break; } } else if (s[i] != t[j]) { if (i == 0) { j++; continue; } else if (i != 0) { i = 0; j = tt + 1; continue; } } } if (flag == 1) break; else if (count < length) { change(s, count); } else break; } if (flag == 1) return true; else return false; } int main() { string s, t; while (cin >> s >> t && (s != "0" || t != "0")) { if (Judge(s, t)) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }
错误原因:
1、一开始循环弄错了,导致死循环
2、count没有加上引用符,还是导致死循环了
思路:
1、首先写一个子函数用来改变病毒字符串的顺序
2、flag标记是否有相同的
3、有过病毒字符串有连续几个和人的一样,但下一个不一样,需要一个tt来记住第一个i相等的时候,j的大小
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码