CODE[VS] 1404 字符串匹配
来源:互联网 发布:java acl访问控制列表 编辑:程序博客网 时间:2024/06/05 16:02
题目地址:http://codevs.cn/problem/1404/
毕竟是中文题目,题目意思在上面很明显了,就是计算从A的任意位开始的子串和B匹配的长度,求出匹配长度恰为x的位置有多少个?
这题是一题裸的kmp,不过稍微需要思考下
代码附上:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int MAXN=200012;int next[MAXN],m,n,k,x,js[MAXN];char a[MAXN],b[MAXN];void build_next(){ int i,j; j=0; next[1]=0; for (i=2;i<=m;i++) { while ((j>0)&&(b[i]!=b[j+1])) j=next[j]; if (b[i]==b[j+1]) j++; next[i]=j; } return ;}void Count(){ int i,j=0; for (i=1;i<=n;i++) { while ((j>0)&&(a[i]!=b[j+1])) j=next[j]; if (a[i]==b[j+1]) j++; js[j]++; }}int main(){ scanf("%d%d%d",&n,&m,&k); scanf("%s",&a[1]); scanf("%s",&b[1]); build_next(); Count(); /* 下面两句话是精华,可以思考下*/ for (int i=m;i>0;i--) js[next[i]]+=js[i]; for (int i=0;i<m;i++) js[i]-=js[i+1]; while (k--) { scanf("%d",&x); printf("%d\n",js[x]); } return 0;}
0 0
- CODE[VS] 1404 字符串匹配
- CODE[VS] 1065 01字符串
- 华为code中的字符串通配符匹配
- 华为code中的字符串通配符匹配
- code[vs] - 1205 单词翻转 - 字符串
- code vs 1520 回文字符串 (dp)
- 字符串匹配算法之BF vs KMP
- VS Code
- VS Code
- VS Code
- VS Code
- VS Code
- vs code
- VS Code
- sunday、kmp、 bm、 horspool字符串匹配算法 code
- code[vs]-1474 十进制转m进制-纯字符串操作
- 【FAQ】bash VS dash 字符串正则表达式匹配
- Codevs 1404 字符串匹配(Kmp)
- Android中IPC的基础和几种常用方式
- C语言实现链表之单向链表(八)删除尾结点
- indeed 在线笔试题
- 多核mips异常分析(2)
- 1236 hdu排名
- CODE[VS] 1404 字符串匹配
- 软考总结篇
- 定制 Project 内的特定资源 的 Inspector面板显示
- java泛型
- Zabbix 客户端自定义端口监控
- c语言实现,图形界面扫雷
- LeetCode题解——Flatten Binary Tree to Linked List
- QT 的信号与槽机制介绍
- Codeforces Round #325 (Div. 1) 解题报告