SDUT-3311-买糖-KMP应用
来源:互联网 发布:远光软件股票 编辑:程序博客网 时间:2024/05/13 08:51
题意: 中文题木啊,
思路:
找子串在总串中出现的次数;
次数为1的话就输出串的起始位置
CODE
#include<iostream>#include<string.h>#include<stdlib.h>#include<stdio.h>#include<algorithm>using namespace std;int s[1000100];int t[1000100];int ls, lt;int next[1000100];void getnext(){ int i=0,j=-1; next[0] = -1; while(i < lt) { if(j == -1 || t[i]==t[j]) { i++; j++; next[i] = j; } else j = next[j]; }}void kmp(){ getnext(); int i=0,j = 0; int cnt = 0; int pos; while(i<ls&&j<lt) { if(j==-1||s[i]==t[j]) { i++; j++; if(j==lt) { cnt++; pos=i; j=next[j]; if(cnt>1) break; } } else j=next[j]; } if(cnt==1) { printf("%d %d\n",pos-lt+1,pos); } else printf("-1\n");}int main(){ while(~scanf("%d",&ls)) { int i; for(i = 0; i < ls;i++) scanf("%d",&s[i]); scanf("%d",<); for(i = 0; i < lt;i++) scanf("%d",&t[i]); kmp(); } return 0;}PS:
比赛时候数据水,我用暴力加优化水过的,
0 0
- SDUT-3311-买糖-KMP应用
- SDUT 3311 KMP的应用
- SDUT KMP简单应用
- SDUT 3311 数据结构实验之串三:KMP应用
- sdut 3311 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用 sdut(oj 3311)
- SDUT 3311 数据结构实验之串三:KMP应用
- [SDUT](3311)数据结构实验之串三:KMP应用 ---KMP(串)
- KMP的简单应用(SDUT 2772)
- SDUT 2272 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用 (sdut oj2772)
- SDUT数据结构实验之串三:KMP应用
- sdut oj2772 数据结构实验之串一:KMP简单应用
- sdut oj3311 数据结构实验之串三:KMP应用
- SDUT 2772 数据结构实验之串一:KMP简单应用
- <sdut-ACM>数据结构实验之串三:KMP应用
- SDUT 2772 数据结构实验之串一:KMP简单应用
- [SDUT](2772)数据结构实验之串一:KMP简单应用 ---KMP(串)
- JDBC主要API介绍
- HDU 2087 剪花布条(水~)
- hdu 1092 A+B for Input-Output Practice (IV)
- java 工具类(时间格式字符串截取年月)
- 【Matlab学习笔记】(二)matlab的帮助系统
- SDUT-3311-买糖-KMP应用
- centos关机
- Android M 新的运行时权限开发者需要知道的一切
- CentOS 7 上面的samba共享有问题
- java 访问的权限
- floyd 模板
- C#命名规范
- UVALive - 5095 Transportation(拆边+费用流)
- 如何生成多叉树,以构建树形结构需要的数据