POJ 2752 Seek the Name, Seek the Fame(next数组的理解)
做此题,只要理解好next数组就行.......................
#include <cstdio> #include <cmath> #include <iostream> #include <cstring> #include <string> #include <algorithm> using namespace std; char str[411111],tmp[411111]; int next[411111],ans[411111]; void getnext(char *t) { int i=0,j=-1; int len = strlen(t); next[0] = -1; while(i < len) { if(t[i] == t[j] || j == -1) { i ++; j ++; next[i] = j; } else j = next[j]; } } /* int kmp(char *s,char *t) { int lens = strlen(s); int lena = strlen(t); int i=0,j=0; while(i < lens && j < lena) { if(s[i] == t[j] || j == -1) { i++; j++; } else j = next[j]; } if(j < lena) return -1; return i - lena; } */ int main() { while(scanf("%s",str) != EOF) { strcpy(tmp,str); int len = strlen(str); int cnt = 0; getnext(str); int j = next[len]; ans[cnt++] = j; while(j > 1) { ans[cnt++] = next[j]; j = next[j]; } for(int i=cnt-1; i>=0; i--) { if(ans[i] != 0) printf("%d ",ans[i]); } printf("%d\n",len); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)