学密码学一定得学程序

题目描述

曾经,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相关推荐

  1. 学密码学一定得学程序

    Description 曾经,ZYJ同学非常喜欢密码学.有一天,他发现了一个很长很长的字符串S1.他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2.但是很不幸的是,WL忘记跟他说是什么意思了 ...

  2. 学密码学一定得学程序(SDUT 2463)

    Problem Description 曾经,ZYJ同学非常喜欢密码学.有一天,他发现了一个很长很长的字符串S1.他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2.但是很不幸的是,WL忘记跟 ...

  3. 零起点学算法01——第一个程序Hello World!

    零起点学算法01--第一个程序Hello World! Description 题目很简单 输出"Hello World!"(不含引号),并换行. Input 没有输入 Outpu ...

  4. 现学现卖微信小程序开发(二)

    现学现卖微信小程序开发(一) 现学现卖微信小程序开发(三):引入Rx,为小程序插上翅膀 一个Todo应用的小程序版 好的,那么下一步我们就先照猫画虎,新建一个todos文件夹,然后一套四样同名文件准备 ...

  5. 没学c语言可以学python_先学C语言还是Python?资深程序员往往是这样建议的!

    编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...

  6. 学计算机数据结构重要吗,程序员都说数据结构重要,那么究竟什么是数据结构?...

    原标题:程序员都说数据结构重要,那么究竟什么是数据结构? 大学阶段,如果问大家计算机专业课中哪门课是最重要的?想必有一多半的人都会回答数据结构.既然大家都说数据结构重要,那么究竟什么是数据结构呢?今天 ...

  7. 南昌大学计算机接收调剂的条件,关于2018年河南昌大学学硕士研究生接收调剂程序及要求的须知详情...

    [导读]以下是在职研究生考试网整理的"关于2018年河南昌大学学硕士研究生接收调剂程序及要求的须知详情"全部内容,想要了解更详细的河南昌大学学调剂信息的请看以下正文吧! 一.接收调 ...

  8. python是什么意思中文、好学吗-学习python难吗?是不是越低级的程序越难学,越高级的程序越简单?...

    原标题:学习python难吗?是不是越低级的程序越难学,越高级的程序越简单? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言, ...

  9. 学计算机专业好还是学医专业好,学计算机好还是学医好 程序员的建议就是学医你认为呢...

    程序员劝高考650分堂弟,放弃报计算机去学医,结果隔天蒙了 每年高考过后,考生们的心情都非常忐忑,一边期待自己什么成绩,另外一边又要为选择什么样的专业和学校烦恼,不管怎么焦虑,这都是每个考生都需要经历 ...

最新文章

  1. AI初创公司都去哪了?2019年科技公司“五巨头”收购盘点
  2. caffe matlab 提取全链接层特zheng
  3. php调用字符串函数参数,如何从包含参数的变量中存储的字符串调用PHP函数
  4. 使用ABAP事务码STAD分析Asynchronous RFC call性能
  5. Django的model中日期字段设置默认值的问题
  6. RestFull架构
  7. opencv 数学操作
  8. 我之所以抛弃Java而选择Kotlin的10个理由
  9. Vue练习(修改为自定义事件)
  10. springMVC包扫描失效,前端控制器加载异常
  11. 邓迪大学计算机专业,邓迪大学计算机科学本科专业申请.pdf
  12. 6.世界坐标观察模式
  13. [leetcode]Length of Last Word
  14. python类方法为装饰器_类方法的python装饰器
  15. Axure|【医药、医疗】药企员工内部培训平台原型
  16. php 开发 oa 框架,基于ThinkPHP框架开发的全功能OA办公管理系统PHP源码
  17. 关于APP 内涉及用户个人敏感信息/权限的进一步整改
  18. 怎么知道服务器是否正版,盗版太坑爹!五招识别Win7旗舰版正版
  19. c语言文字表达式,【原创】化学方程式配平算法的设计与实现( 非Naylon版)
  20. 《周易》中的君子形象--http://cul.china.com.cn/guoxue/2018-06/04/content_40369049.htm

热门文章

  1. Exchange server 2010系列教程之一 安装Exchange 2010准备条件
  2. 朋友开网店 做个抓取数据的小程序
  3. [译] 如何写一篇杀手级的软件工程师简历
  4. 典型问题分析(十五)
  5. Django后台定制
  6. 正则表达式教程手册、正则一点通(Chinar出品)
  7. 前端小项目之在线便利贴
  8. VR如何巧妙填补传统数据视觉化的漏洞
  9. 使用tortoise git管理gitolite版本库
  10. 查看mysql版本的四种方法