FZU 1481 KMP
来源:互联网 发布:mac连不到app store 编辑:程序博客网 时间:2024/05/16 04:57
【题目大意】
判断两条环形字符串是否相同。
【思路】
将待匹配串复制一份接在后面,再用模式串做KMP,若能找到说明为同一个串。
蛮久没写KMP了,算法忘得差不多了..
小悲剧啊~
【CODE】
#include<iostream>#include<cstdio>using namespace std;char t[222],s[444];int next[222];void setNext(){ next[0]=-1; int j=0,k=-1; while( j<strlen(t) ) { if( k==-1||t[j]==t[k] ) next[++j]=++k; else k=next[k]; }}bool judge(){ int l1=strlen(s),l2=strlen(t); int i=0,j=0,k; while( i<l1&&j<l2 ) { if( j==-1||s[i]==t[j] ) i++,j++; else j=next[j]; } return j==l2;}int main(){ while( scanf("%s",&t)!=EOF ) { setNext(); int sum=0,n; scanf( "%d",&n ); while( n-- ) { memset( s,0,sizeof(s) ); scanf( "%s",&s ); if( strlen(t)!=strlen(s) ) continue; int len=strlen(s); for( int i=0;i<len;i++ ) s[len+i]=s[i]; s[len<<1]=0; if( judge() ) sum++; } printf( "%d\n",sum ); } return 0;}
- FZU 1481 KMP
- FZU-1926+KMP
- FZU 2122(KMP)
- FZU 2275-KMP
- fzu 2275 Game KMP
- FZU 2275 Game (KMP)
- fzu 1901 Period II(KMP)
- FZU 1901 Period II (KMP)
- FZU 2275 Game(KMP)
- fzu 1926 填空 【kmp字符串匹配】
- FZU 2122 又见LKity (KMP)
- fzu 1901 Period II (KMP)
- FZU 题目1901 Period II (KMP)
- FZU 1901 Period II (kmp)
- FZU 1901 Period II (KMP+技巧)
- FZU 1901 Period II(KMP)
- FZU Problem 1926 填空(KMP好题一枚,确实好)
- FZU 1901+kmp的next数组的应用
- linux命令3
- vs2010:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
- VBA中的错误处理
- MFC隐藏主窗口的方法
- MySQL Connection Failed! 1045: Access denied for user
- FZU 1481 KMP
- linux命令4
- linux命令5
- ANDROID 开发一个新闻阅读器之新闻列表
- 数据库启动报错 ORA-01078和LRM-00109
- 带有svn符号信息的清理方法
- TextFormat设置中文字体font属性注意的问题
- VassistX 常用快捷方式
- linux命令6