hpu 1897 CZY找句子
来源:互联网 发布:西门子840dsl编程手册 编辑:程序博客网 时间:2024/06/08 14:57
本题链接:点击打开链接
本题大意:
输入一个N和一个M,第二行输入N个数值,第三行输入M个数值,M < N,求N中包含M的起始位置。
解题思路:
使用KMP算法,求出next数组,然后进行比较,当首次出现子字符串时,输出主字符串的位置-子字符串的长度,因为从零开始编的号,故需加一。
参考代码:
#include<stdio.h>#include<string.h>int str1[1000100];int str2[1000100];int next[1000100];int n,m,len1,len2;void getnext(){int i=0,j=-1;next[i]=j;while(i<m){if(j==-1||str2[i]==str2[j]){i++;j++;next[i]=j;}elsej=next[j];}}int kmp(){int i=0,j=0;while(i<n){if(j==-1||str1[i]==str2[j]){i++;j++;if(j==m){return i-m+1; //输出位置编号从一开始,但从零开始编的号,故加一; }}elsej=next[j];}}int main(){while(scanf("%d%d",&n,&m)!=EOF){memset(next,0,sizeof(next));for(int i=0;i<n;i++)scanf("%d",&str1[i]);for(int j=0;j<m;j++)scanf("%d",&str2[j]);getnext();kmp();printf("%d\n",kmp());}return 0;}
0 0
- hpu 1897 CZY找句子
- CZY找句子
- hpuoj1697 CZY找句子【KMP】
- hpu-1690-CZY的组合数烦恼
- hpu-1690-CZY的组合数烦恼
- HPU-1693-CZY的YY难题
- czy
- HPU OJ 序列找数
- 【HPU】[1728]序列找数
- hpuoj 1697 找句子
- 周赛-找句子(kmp)
- HPU
- [HPU
- [HPU
- 笑得满地找假牙的47个爆笑句子
- 句子
- 句子
- 句子
- http协议学习和总结系列
- canvas的基本使用
- JAVA基础篇八(Java,C++中的网络)
- wget cookies 欺骗
- Netty官方指南: User guide for 4.x
- hpu 1897 CZY找句子
- 英语学习
- curl
- 记我的WiFi音箱之一个网络在线播放及本地播放音乐器(四)
- [Tips] C++ plugin to QML
- 几道周赛题目(bfs,dfs,kmp,快速幂运算,并查集)
- html中含提示文字的输入框
- 202Happy Number
- 周赛2-F