数据结构实验之串三:KMP应用 sdut(oj 3311)

来源:互联网 发布:ubuntu网卡驱动 编辑:程序博客网 时间:2024/05/24 01:39

数据结构实验之串三:KMP应用

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

有n个小朋友,每个小朋友手里有一些糖块,现在这些小朋友排成一排,编号是由1到n。现在给出m个数,能不能唯一的确定一对值l和r(l <= r),使得这m个数刚好是第l个小朋友到第r个小朋友手里的糖块数?

输入

首先输入一个整数n,代表有n个小朋友。(0

输出

 如果能唯一的确定一对l,r的值,那么输出这两个值,否则输出-1

示例输入

51 2 3 4 532 3 4

示例输出

2 4

提示

 

来源

windream


#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>using namespace std;int n, m;int next[1000100];int s[1000010], t[1000010];void get_next(int t[], int next[]){    int i=1;    next[1] = 0;    int j = 0;    while(i < m)    {        if(j == 0 || t[i] == t[j])        {            ++i;            ++j;            next[i] = j;        }        else            j = next[j];    }}void KMP(int n, int m){    int pos=1;    int k = 1;    int f=0, h;    while(pos <= n&&k <= m)    {        if(k == 0 || s[pos] == t[k])        {            ++pos;            ++k;        }        else        {            k = next[k];        }        if(k > m)        {            k = 1;            f++;            if(f == 1)            {//                d = 1;                h = pos;            }        }    }    if(f == 1)        printf("%d %d\n", h-m, h-1);    else        printf("-1\n");}int main(){    int n, m;    scanf("%d", &n);    for(int i = 1; i <= n; i++)        scanf("%d", &s[i]);    scanf("%d", &m);    for(int j = 1; j <= m; j++)    scanf("%d", &t[j]);    get_next(t, next);    KMP(n, m);    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 安卓6不支持的应用怎么办 银行卡被存款机吞了怎么办 去银行卡存款机器故障怎么办 银行卡存款没有存进去怎么办 被黑网站黑钱了怎么办 饿了吗账户异常怎么办 单位里有人整你怎么办 乌鲁木齐信息采集结束后怎么办 头发很长时间不长怎么办啊 打嘟噜时间不长怎么办 阴茎勃起的时间不长怎么办 睡觉的时间不长怎么办 每次锻炼时间不长怎么办 微信好友不知道是谁怎么办 就一个软件闪退怎么办 葫芦侠修改闪退怎么办 戴尔游匣磁盘占用100怎么办 步步高家教机扫描笔不亮怎么办 社保卡手机号换了怎么办 香港公司进出口没有申报怎么办 智能电视右上角网络未连接怎么办 电子秤按键板不好用怎么办失灵 桑塔纳车钥匙锁车里了怎么办 舌头上有锯齿印怎么办 夏天有脚气脚臭怎么办 xp分辨率太高黑屏怎么办 农村淘宝标识类目没了怎么办 被投诉到食品监督局怎么办 被客户315投诉了怎么办 给人打不接受调解怎么办 失业证年审忘了怎么办 工商年检过期4天怎么办 个体营业执照年审过期了怎么办 企业年报密码忘了怎么办 税务年报报错了怎么办 工商证过期5年怎么办 车年检标志丢了怎么办 年检标志打错了怎么办 贵州个体出租车工商执照年检怎么办 驾驶证考试预约提示网络繁忙怎么办 帝豪显示屏花屏怎么办