HDUOJ---(2203)亲和串
亲和串
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6579 Accepted Submission(s): 2976
void get_next(char const * pt , int * next)
{
int i,j=-,len=strlen(pt);
next[i=]=-;
while(i<len)
{
if(j==-||pt[j]==pt[i])
{
++i;
++j;
if(pt[j]!=pt[i])
next[i]=j;
else
next[i]=next[j];
}
else
j=next[j];
}
}
有了上面这个函数,下面的kmp部分其实就是BF算法;
代码如下:
//next设置为全局变量数组,当然也可以设置下面数组中...
int smatch_kmp(char *ps,char *pt )
{
int lens=strlen(ps); //sizoef(pt)/sizeof(char);
int lent=strlen(pt);
int i=,j=-;
//next[]
get_next(ps,next);
while(i<lens&&j<lent)
{
if(j==-||ps[i]==pt[j])
{
++i;
++j;
}
else
j=next[j];
}
if(j==lent)
return i-lent;
else
return -; }
所以此题的代码不难想到了为:
代码:
//BF个改进kmp算法....
/*@code龚细军*/
#include<stdio.h>
#include<string.h>
#define maxn 100000
int next[maxn+];
char pps[maxn+],ppt[maxn+];
/*求next数组的值*/
void getnext(char const *pt ,int *next) //t表示目标串 s代表的是主串
{
int i=,j=-;
next[i]=-;
int len=strlen(pt);
while(i<len)
{
if(j==-||pt[i]==pt[j]) //匹配的情况,或者是开始的赋值
{
i++;
j++;
if(pt[i]!=pt[j]) //再次判断是否匹配
{
next[i]=j;
}
else
next[i]=next[j];
}
else
j=next[j];
}
}
//BF的改进kmp
bool smatch_kmp(char const *s ,char const *t)
{
int lens=strlen(s); //到主串的长度
int lent=strlen(t); //得到目标串的长度
memset(next,,sizeof(next));
getnext(ppt,next);
int i=,j=-;
while(i<*lens&&j<lent)
{
if(j==-||s[i%lens]==t[j]) //目前匹配所以都进位i++,j++
{
i++;
j++;
}
else j=next[j]; //如果是BF的话,需要回溯,再j++ ,但是kmp在此处作出了改进,不必全回溯
}
if(j>=lent)
return ; // i-lent; 说明是匹配成功了..
else
return ; //说面并未匹配成功 } int main()
{ while(scanf("%s%s",pps,ppt)!=EOF)
puts(smatch_kmp(pps,ppt)==true?"yes":"no");
return ;
}
HDUOJ---(2203)亲和串的更多相关文章
- HUD 2203 亲和串
HUD 2203 亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768K (Java/Others) [题目描述 - ...
- HDOJ 2203 亲和串 【KMP】
HDOJ 2203 亲和串 [KMP] Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 2203 亲和串(KMP)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=2203 题目: 亲和串 Time Limit: 3000/1000 MS (Java/Others) ...
- hdu 2203:亲和串(水题,串的练习)
亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdoj 2203 亲和串
亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDOJ/HDU 2203 亲和串(简单的判断~Java的indexOf()方法秒)
Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现 ...
- hdu 2203 亲和串
把T串扩展成两倍 然后KMP 注意T的长度要大于P的长度 #include <iostream> #include <cstdio> #include <cstri ...
- hdu 2203亲和串 (kmp)
#include<cstdio>#include<iostream>#include<cstring>#include<string>using nam ...
- 【HDU 2203】亲和串
题 题意 给你一个字符串s1,字符串s2,s1循环移位,使s2包含在s1中,则s2 是s1的亲和串 分析 把s1自身复制一遍接在后面. 方法一: 用strstr函数. 方法二: KMP算法. 方法三: ...
- HDU2203 亲和串
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
随机推荐
- List 集合转换为String
开发中会用到把 List<string> 的内容拼接成以逗号分隔的字符串的形式,现总结如下: 方法一: public String listToString(List list, cha ...
- latex用法疑难解析
latex用法疑难解析 1.问题:如何生成ps(PostScript)文件? 回答: 方法有二 (1)用dvips这个工具,在WinEdt编辑器中专门有一个按钮: (2)如果使用windows系统的话 ...
- eclipse maven 报错Could not get the value for parameter encoding for plugin execution default
问题描述:更改默认的maven仓库路径完成后.即存maven项目或者新建maven项目的时候出现如下错误 Could not get the value for parameter encoding ...
- 同时启动多个Tomcat服务器
以下步骤能够同时启动两个tomcat:1.特别要注意:不要设置CATALINA_HOME 2.分别修改安装目录下的conf子目录中的server.xml文件: a.修改http访问端口(默认为8080 ...
- LigerUI之Grid使用详解(三)——字典数据展示
一.问题概述 在开发web信息管理系统时,使用Web前端框架可以帮助我们快速搭建一组风格统一的界面效果,而且能够解决大多数浏览器兼容问题,提升开发效率.在关于LigerGrid的前两篇的内容里,给大家 ...
- kafka基本原理概述——patition与replication分配
kafka一直在大数据中承受着数据的压力也扮演着对数据维护转换的角色,下面重点介绍kafka大致组成及其partition副本的分配原则: 文章参考:http://www.linkedkeeper.c ...
- WordPress 后台添加额外选项字段到常规设置页面
有时候我们需要添加一些额外的设置选项到常规设置(后台 > 设置 > 常规)页面,下面是一个简单的范例: 直接添加到主题的 functions.php 即可: /*** WordPres ...
- Unity异步加载场景loading条
using UnityEngine; using System.Collections; public class LoadingScene : MonoBehaviour { public UISl ...
- Jade的奇怪解析问题。
如下的jade代码: span#span1 Span#span2 解析的时候span2总是变成span1的子元素.怎么解决? [解决方法] 用如下的代码就可以了. span#span1 | s ...
- springboot h2数据库的配置
配置文件 #h2 数据库配置 #配置数据库连接地址spring.datasource.url=jdbc:h2:sunniwell:sos#配置数据库驱动spring.datasource.driver ...