SDUT-3331_数据结构实验之串三:KMP应用
数据结构实验之串三:KMP应用
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
有n个小朋友,每个小朋友手里有一些糖块,现在这些小朋友排成一排,编号是由1到n。现在给出m个数,能不能唯一的确定一对值l和r(l <= r),使得这m个数刚好是第l个小朋友到第r个小朋友手里的糖块数?
Input
首先输入一个整数n,代表有n个小朋友。下一行输入n个数,分别代表每个小朋友手里糖的数量。
之后再输入一个整数m,代表下面有m个数。下一行输入这m个数。
Output
如果能唯一的确定一对l,r的值,那么输出这两个值,否则输出-1
Sample Input
5
1 2 3 4 5
3
2 3 4
Sample Output
2 4
Hint
Source
windream
KMP算法的简单应用,注意它要求的是唯一子串,当找到子串后要再用一次KMP确定这是唯一的子串。
这道题很坑爹的没有给范围,所以按最大的来
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Next[1000050],s1[1000050],s2[1000050],m,n;
void get_next()
{
int i,j;
i = 0;
j = -1;
Next[0] = -1;
while(i<m)
{
if(j==-1||s2[i]==s2[j])
{
i++;
j++;
Next[i] = j;
}
else
j = Next[j];
}
}
int KMP(int x)
{
int i,j;
get_next();
i = x;
j = 0;
while(i<n)
{
if(j==-1||s1[i]==s2[j])
{
i++;
j++;
}
else
j = Next[j];
if(j==m)
return i - j + 1;
}
return -1;
}
int main()
{
int i,a,b;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&s1[i]);
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d",&s2[i]);
a = KMP(0);
if(a!=-1)
{
b = KMP(a);
if(b==-1)
printf("%d %d\n",a,a+m-1);
else
printf("-1\n");
}
else
printf("-1\n");
return 0;
}
SDUT-3331_数据结构实验之串三:KMP应用的更多相关文章
- SDUT 3311 数据结构实验之串三:KMP应用
数据结构实验之串三:KMP应用 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 有n个小朋友 ...
- SDUT OJ 数据结构实验之串三:KMP应用
数据结构实验之串三:KMP应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT 2772 数据结构实验之串一:KMP简单应用
数据结构实验之串一:KMP简单应用 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 给定两个 ...
- SDUT OJ 数据结构实验之串一:KMP简单应用 && 浅谈对看毛片算法的理解
数据结构实验之串一:KMP简单应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT OJ 数据结构实验之串二:字符串匹配
数据结构实验之串二:字符串匹配 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT 3347 数据结构实验之数组三:快速转置
数据结构实验之数组三:快速转置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 转置运算是一 ...
- SDUT OJ 数据结构实验之二叉树三:统计叶子数
数据结构实验之二叉树三:统计叶子数 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT OJ 数据结构实验之排序三:bucket sort
数据结构实验之排序三:bucket sort Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem D ...
- SDUT OJ 数据结构实验之链表三:链表的逆置
数据结构实验之链表三:链表的逆置 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...
随机推荐
- Django项目:CRM(客户关系管理系统)--18--10PerfectCRM实现King_admin日期优化
#kingadmin_tags.py # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— # # 因为前端禁止使用下划线开头(_meta.ve ...
- git(转)
转载:http://www.cnblogs.com/my-freedom/p/5701427.html 一.如何安装git 下载地址: https://git-scm.com/download/win ...
- light7结合jquery实现开关按钮
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- JS高级---学习roadmap---5 parts
JS高级---学习roadmap---5 parts part 1-3 part 4-5
- 学习Python笔记---列表简介
列表: 列表由一系列按特定顺序排列的元素组成.你可以创建包涵字母表中所有字母.数字0-9或所有家庭成员姓名的列表:也可以将任何东西加入列表中,其中的元素之间可以没有任何关系. 列表 在Python中, ...
- 机房收费系统vb.net之打包与部署(二)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangdan199112/article/details/28286365 ...
- checkbox的全选,取消全选,获得选中值
<html> <head> <title>jq全选以及获得选中项的值</title> <meta charset="utf-8" ...
- VS插件集合
VS的强大不仅仅在于VS本身的强大. 同时,也有很多好用的插件,可以帮助我们更好的编辑代码, 提高效率. https://marketplace.visualstudio.com/search?tar ...
- Vim 中自定义注释快捷键
写程序的时候写过的代码不忍心立马删掉,所以注释很多,所以找了下注释的快捷健. 打开 /etc/vim/vimrc文件,添加如下两行代码即可. /* 注释该行 */ map = I/* ^[A */j ...
- Python要如何实现(列表)排序?
排序,是许多编程语言中经常出现的问题.同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现) 一.使用Python内置函数进行排序 Python中拥有内置函数实现排序,可以直接调用 ...