Oulipo
2024-10-18 03:27:55
poj3461:http://poj.org/problem?id=3461
题意:求一个串在另一个串中出现的次数。
题解:直接套用KMP即可,在统计的时候做一下修改。找到之后不是直接返回,而是移动i-(j-next[j])位。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define N 1000005
using namespace std;
int next[N];
char s1[N],s2[N];
int len1,len2,ans;
void getnext(int plen){
int i = ,j = -;
next[] = -;
while( i<plen ){
if(j==-||s1[i]==s1[j]){
++i;++j;
if(s1[i]!=s1[j] )
next[i] = j;
else
next[i] = next[j];
}
else
j = next[j];
}
}
void KMP(){
getnext(len1);
int i = ,j = ;
while (i<len2&&j<len1){
if( j == - || s2[i] == s1[j] ){
++i;
++j;
}
else {
j = next[j]; }
if( j==len1 ){//找到一个匹配串之后,不是在原来串中往后移动一位,而是移动i-(j-next[j]);
ans++;
j=next[j];
}
}
}
int main(){
int k;
scanf("%d",&k);
while(k--){
scanf("%s%s",s1,s2);
len1=strlen(s1);
len2=strlen(s2);
ans=;
KMP();
printf("%d\n",ans);
}
}
最新文章
- 【转】输入/输出流 - 全面掌握IO
- 59-chown 简明笔记
- 邮件格式(HTML/TXT),TXT为文本邮件
- Python之路-python数据类型(列表、字典、字符串、元祖)操作
- UITableView自定义单元格
- WINIO64位模拟键鼠操作
- 9 个用于移动APP开发的顶级 JavaScript 框架【申明:来源于网络】
- PXC中的GTIDs
- git checkout -b mybranch和git checkout mybranch
- 用Javascript,DHTML控制表格的某一列的显示与隐藏
- 02 爬虫数据解析之re,xpath,beautifulsoup
- DevExpress ASP.NET Bootstrap Controls v18.2新功能详解(二)
- 項目当中使用的easyui的模板crud页面
- 了解Queue
- Serial-mcu
- Tree Constructing CodeForces - 1003E(构造)
- VSS_01
- Plot Candlestick Charts in Research of quantopian
- c++ 判断容器是否为空
- 分享一些JAVA常用的学习网站
热门文章
- Demon_背包系统(实现装备栏,背包栏,可以切换装备)
- [转] 关于c++的头文件依赖
- iOS 如何优雅的处理“回调地狱Callback hell”(一) (上)
- Python之路,Day16 - Django 进阶
- sql server 2008 评估期已过期
- ASP.NET-FineUI开发实践-13(一)
- MD5算法的使用
- EXPDP IMPDP 知识总结
- ASP.NET Core中使用Razor视图引擎渲染视图为字符串
- jdbc中的Statement对象和Preparedstatement对象的区别,以及通过jdbc操作调用存储过程