学密码学一定得学程序 KMP
学密码学一定得学程序
题目描述
曾经,ZYJ同学非常喜欢密码学。有一天,他发现了一个很长很长的字符串S1。他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2。但是很不幸的是,WL忘记跟他说是什么意思了。这个时候,ZYJ不得不求助与伟大的ZP。ZP笑了笑说,这个很神奇的,WL的意思是只要你找到她给你的字符串在那个神奇的字符串的位置,你就会有神奇的发现。ZYJ恍然大悟,原来如此,但是悲剧来了,他竟然不知道怎么找。。。。是的,很囧是不是。所以这时候就需要化身为超级玛丽亚的你现身了,告诉他吧。。。。。。
输入
首先输入一个n。表示有n组测试数据。
每组测试数据有两行。
第一行为字符串S1,长度不大于1000000。
第二行为字符串S2,长度不大于10000,并且长度不小于2。
输出
输出S2在S1的位置。如果有多个位置,只输出第一个位置。
如果找不到,就输出“::>_<::“(不输出双引号)。
示例输入
1 ASDFGDF DF
示例输出
3
#include<stdio.h>
#include<string.h>
#define inf 1000001
#define dfs 10001
char str1[inf], str2[dfs];
int next[dfs];
void GetNext(char* p,int next[])
{int pLen = strlen(p);next[0] = -1;int k = -1;int j = 0;while (j < pLen - 1){if (k == -1 || p[j] == p[k]){++k;++j;next[j] = k;}elsek = next[k];}
}
int KmpSearch(char* s, char* p)
{int i = 0;int j = 0;int sLen = strlen(s);int pLen = strlen(p);while (i < sLen && j < pLen){if (j == -1 || s[i] == p[j]){i++;j++;}elsej = next[j];}if (j == pLen)printf("%d\n", i - j + 1);elseprintf("::>_<::\n");return 0;
}
int main(){int n;scanf("%d", &n);while(n--) {scanf("%s%s", &str1, &str2);GetNext(str2, next);KmpSearch(str1, str2);}return 0;
}
转载于:https://www.cnblogs.com/Genesis2018/p/9079873.html
学密码学一定得学程序 KMP相关推荐
- 学密码学一定得学程序
Description 曾经,ZYJ同学非常喜欢密码学.有一天,他发现了一个很长很长的字符串S1.他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2.但是很不幸的是,WL忘记跟他说是什么意思了 ...
- 学密码学一定得学程序(SDUT 2463)
Problem Description 曾经,ZYJ同学非常喜欢密码学.有一天,他发现了一个很长很长的字符串S1.他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2.但是很不幸的是,WL忘记跟 ...
- 零起点学算法01——第一个程序Hello World!
零起点学算法01--第一个程序Hello World! Description 题目很简单 输出"Hello World!"(不含引号),并换行. Input 没有输入 Outpu ...
- 现学现卖微信小程序开发(二)
现学现卖微信小程序开发(一) 现学现卖微信小程序开发(三):引入Rx,为小程序插上翅膀 一个Todo应用的小程序版 好的,那么下一步我们就先照猫画虎,新建一个todos文件夹,然后一套四样同名文件准备 ...
- 没学c语言可以学python_先学C语言还是Python?资深程序员往往是这样建议的!
编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...
- 学计算机数据结构重要吗,程序员都说数据结构重要,那么究竟什么是数据结构?...
原标题:程序员都说数据结构重要,那么究竟什么是数据结构? 大学阶段,如果问大家计算机专业课中哪门课是最重要的?想必有一多半的人都会回答数据结构.既然大家都说数据结构重要,那么究竟什么是数据结构呢?今天 ...
- 南昌大学计算机接收调剂的条件,关于2018年河南昌大学学硕士研究生接收调剂程序及要求的须知详情...
[导读]以下是在职研究生考试网整理的"关于2018年河南昌大学学硕士研究生接收调剂程序及要求的须知详情"全部内容,想要了解更详细的河南昌大学学调剂信息的请看以下正文吧! 一.接收调 ...
- python是什么意思中文、好学吗-学习python难吗?是不是越低级的程序越难学,越高级的程序越简单?...
原标题:学习python难吗?是不是越低级的程序越难学,越高级的程序越简单? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言, ...
- 学计算机专业好还是学医专业好,学计算机好还是学医好 程序员的建议就是学医你认为呢...
程序员劝高考650分堂弟,放弃报计算机去学医,结果隔天蒙了 每年高考过后,考生们的心情都非常忐忑,一边期待自己什么成绩,另外一边又要为选择什么样的专业和学校烦恼,不管怎么焦虑,这都是每个考生都需要经历 ...
最新文章
- AI初创公司都去哪了?2019年科技公司“五巨头”收购盘点
- caffe matlab 提取全链接层特zheng
- php调用字符串函数参数,如何从包含参数的变量中存储的字符串调用PHP函数
- 使用ABAP事务码STAD分析Asynchronous RFC call性能
- Django的model中日期字段设置默认值的问题
- RestFull架构
- opencv 数学操作
- 我之所以抛弃Java而选择Kotlin的10个理由
- Vue练习(修改为自定义事件)
- springMVC包扫描失效,前端控制器加载异常
- 邓迪大学计算机专业,邓迪大学计算机科学本科专业申请.pdf
- 6.世界坐标观察模式
- [leetcode]Length of Last Word
- python类方法为装饰器_类方法的python装饰器
- Axure|【医药、医疗】药企员工内部培训平台原型
- php 开发 oa 框架,基于ThinkPHP框架开发的全功能OA办公管理系统PHP源码
- 关于APP 内涉及用户个人敏感信息/权限的进一步整改
- 怎么知道服务器是否正版,盗版太坑爹!五招识别Win7旗舰版正版
- c语言文字表达式,【原创】化学方程式配平算法的设计与实现( 非Naylon版)
- 《周易》中的君子形象--http://cul.china.com.cn/guoxue/2018-06/04/content_40369049.htm