博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1711 Number Sequence(KMP模板)
阅读量:4640 次
发布时间:2019-06-09

本文共 1195 字,大约阅读时间需要 3 分钟。

 

这道题就是一个KMP模板。

1 #include
2 #include
3 using namespace std; 4 5 const int maxn = 1000000+5; 6 7 int n,m; 8 9 int next[maxn];10 int a[maxn], b[maxn];11 12 void get_next()13 {14 int i = -1, j = 0;15 ::next[0] = -1;16 while (j < m)17 {18 if (i == -1 || b[i] == b[j])19 ::next[++j] = ++i;20 else21 i = ::next[i];22 }23 }24 25 26 int kmp()27 {28 int i = 0, j = 0;29 while (i < n)30 {31 if (j == -1 || a[i] == b[j])32 {33 i++;34 j++;35 }36 else37 j = ::next[j];38 if (j == m)39 return i;40 }41 return -1;42 }43 44 int main()45 {46 //freopen("D:\\txt.txt", "r", stdin);47 int t;48 cin >> t;49 while (t--)50 {51 cin >> n >> m;52 for (int i = 0; i < n; i++)53 cin >> a[i];54 for (int i = 0; i < m; i++)55 cin >> b[i];56 get_next();57 int k=kmp();58 if (k!=-1) cout << k-m+1 << endl;59 else cout << "-1" << endl;60 }61 return 0;62 }

 

转载于:https://www.cnblogs.com/zyb993963526/p/6358003.html

你可能感兴趣的文章
删除数据库所有表数据
查看>>
kali下搭建WiFi钓鱼热点
查看>>
【Java】 剑指offer(32) 从上往下打印二叉树
查看>>
二十三、连接mysql数据库,创建用户模型
查看>>
leetcode--844:(队列类)比较含退格的字符串
查看>>
判断字符串是否全为空格和去掉字符串中的空格
查看>>
OO第一阶段纪实
查看>>
实验二
查看>>
ASP.NET Web API 2系列(一):初识Web API及手动搭建基本框架
查看>>
抄袭的用Jsp+JavaBean+Mysql实现的登录和注册
查看>>
jquery显示隐藏操作
查看>>
还是畅通工程(hdu1233)并查集应用
查看>>
导入.sql文件入数据库
查看>>
I/O模型
查看>>
EMQ --集成搭建
查看>>
对poi-Excel导入的浅层理解
查看>>
checkbox修改功能保存功能绑定
查看>>
网站推荐:11个相似图片搜索网站(以图找图)
查看>>
Html5 Canvas初探学习笔记(13) -图片变换
查看>>
NOI 2016 循环之美 (莫比乌斯反演+杜教筛)
查看>>