题意:给定一篇文章和一些句子。询问句子是否在文章中出现。
kmp模板题
/*
kmp
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<math.h>
using namespace std;
typedef long long int64;
//typedef __int64 int64;
typedef pair<int64,int64> PII;
#define MP(a,b) make_pair((a),(b))
const int maxn = 1005;
const int maxm = 105;
const int inf = 0x7fffffff;
const double pi=acos(-1.0);
const double eps = 1e-8;
char text[ maxn ][ maxm ];
int len_text;
char pat[ maxn ][ maxm ];
int len_pat;
int next[ maxn ];
void getnext(){
int i,j;
next[ 0 ] = -1;
i = 0;
j = -1;
while( i<len_pat ){
if( j==-1||strcmp( pat[i],pat[j] )==0||strcmp( pat[j],"_" )==0||strcmp( pat[i],"_" )==0 ){
i ++ ;
j ++ ;
next[ i ] = j;
}
else
j = next[ j ];
}
return ;
}
bool kmp( ){
getnext();
//for( int i=0;i<len_pat;i++ ){
// printf("next[ %d ] = %d \n",i,next[i]);
//}
int i,j;
i = 0;
j = 0;
while( i<len_text&&j<len_pat ){
if( j==-1||strcmp( text[i],pat[j] )==0||strcmp(pat[j],"_")==0 ){
i ++ ;
j ++ ;
}
else
j = next[j];
if( j==len_pat ) return true;
}
return false;
}
int main(){
int T;
scanf("%d",&T);
int Case = 1;
while( T-- ){
len_text = 0;
while( 1 ){
scanf("%s",text[ len_text ]);
if( strcmp( text[ len_text ],"@" )==0 ){
break;
}
len_text ++ ;
}//input the passage
int m;
scanf("%d",&m);
printf("Case %d:\n",Case++);
while( m-- ){
len_pat = 0;
while( 1 ){
scanf("%s",pat[ len_pat ]);
if( strcmp( pat[ len_pat ],"@" )==0 ){
break;
}
len_pat ++ ;
}
bool flag = kmp();
if( flag ) puts("YES");
else puts("NO");
}
}
return 0;
}
分享到:
相关推荐
FZU 2196 --- double bfs 6. PKU 1426 --- bfs + pruning 7. BNU 1038 --- dfs transform 8. PKU 1562 --- dfs transform 9. HDU 1253 --- basic bfs 10. PKU 3126 --- bfs + complicate date deal 11. BNU 1054 ---...
2. combinations获取所有的组合情况,permutations可以获取所有的排列情况 3. 限制时间范围 4. 转化为字符型
今天完成题目:398print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数a=[1,
字符串题目记录是 ACM 题目中的一种常见类型,涉及到字符串处理、哈希、后缀数组、KMP 算法等多种知识点。下面是对标题、描述、标签和部分内容的详细解释和知识点总结。 标题:字符串题目记录 该标题表明了问题的...
福州大学信息安全修读资源库 本库就如名称所言,原来是福州大学2018级信息安全专业居住于1#404宿舍的学生自有库,我们收集整理了就读了于此所有的代码作业和各类实验,还有各种资源,本来是合理的我们内部自己学习...
对于想要掌握这门技能的人来说,参加在线编程评测,如fzu online judge,是一个行之有效的途径。fzu online judge是一个面向编程爱好者和学习者的平台,提供了丰富的算法题目,供用户在线解答。这些题目虽然难度不一...
求最大乘积 的源代码 次题是fzu 4月月赛题 是一道数学题啊
FZU ACM 2025寒假集训 1.21-1.23
本文使用typs编写,可以到https://github.com/FZU-psz/easy-py领取源码,可以的话点个star
不要下载此版的,请下载最新的http://download.csdn.net/source/1664620 离线版的福大acm在线评测OJ系统题目 更新到2009年8月 (注:chm电子书格式化)
matlab的登录代码下载 ZJU-toolkit 一些登录浙大通行证以后可以查看到的信息,just for fun. 目前实现的一些小功能 登录浙大通行证 分别实现了web端的登录和钉钉扫码登录,详见文章 蓝码生成器 ...
RTC2020_EfficientSR FZU-CS510冠军开源方案比赛链接: ://www.dcjingsai.com/v2/cmptDetail.html?id 409比赛团队(团队):FZU-CS510比赛名次及热门: 团队成员:福州大学甘敏教授团队的博士生苏建楠,帝视科技张...
从给定文件的内容中,我们可以提取以下计算机视觉和机器学习的知识点: 1. **MNIST手写数字数据库**: 这是一个非常著名的用于计算机视觉和机器学习研究的手写数字图像集合。它包含了成千上万的灰度图,每个图像是28...
"FZU软件工程web课程复习资料-整理" 本资源是FZU软件工程web课程的复习资料,涵盖了web开发的基础知识和技术。下面是对该资源中所涉及的知识点的详细解释: 第一讲 web 开发概述 1. 因特网与万维网 因特网是一种...
6. **字符串处理**:KMP算法、Manacher's Algorithm等,用于处理字符串匹配问题。 7. **模拟**:对实际问题进行抽象建模,编写程序来模拟过程。 8. **编码技巧**:如何高效地读入数据、输出结果,如快速IO、大整数...
FZU软件工程操作系统课程复习资料-整理 本资源摘要信息是关于FZU软件工程操作系统课程复习资料的整理,涵盖操作系统的基本概念、进程和线程、存储管理和文件系统等方面的知识点。 一、操作系统的定义和主要功能 ...
计算机视觉是研究如何让计算机理解和解释视觉信息,使之能够复制人类对视觉信息的处理、分析和理解能力,并做出相应的行为决策。它涉及图像采集、处理、分析和理解等多个方面,广泛应用于工业自动化、监控系统、医疗...
在计算机视觉领域中,灰度共生矩阵(GLCM)是一种用于纹理特征分析的技术。它通过计算图像中像素值的相对位置和分布来揭示图像的纹理特性,这些特性在图像分割、特征提取和图像分析等领域中非常有用。...
fzu大数据基础实验4
根据给定的文件标题“ACM数学_FZU绝密资料”及描述“ACM数学_FZU...............绝密..........”,我们可以看出这份资料主要聚焦于数学在ACM竞赛中的应用,尤其是在解决算法问题时数学理论的重要性。下面我们将从...