题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1465

题目思路:KMP模板题,该说的都在代码里

#include<bits/stdc++.h>
using namespace std;
int nexT[1001],t0,p0;
string t,p;
int KMP(string n,int n0,string m,int m0){
int i=0,j=0,k=0;
while(i<n0){
if(j==-1||n[i]==m[j]){
//如果是在字符串开始或者主子串字符对上了
++i;
++j;
//i,j一起走
if(j==m0){//如果全对完了
i=i+m0-1;
//更新以下i
k++;
//子串数+1
}
}
else{
//否则
j=nexT[j];
//二营长,你他娘的next数组呢
}
}
return k;
//返回字符数量
}
void hnext(string o,int o0){//寻找next数组
int j=0,k=-1;
nexT[j]=k;//先把next[0]变成-1
//如果第一个对上的数字就不对
//那么只动j是不可能找到成功的串的
//所以把他变成-1就是做一个信号
//让程序知道“我需要动i”这件事
while(j<o0){//数组不超限制是肯定的
if(k==-1||o[j]==o[k]){
nexT[++j]=++k;
//如果k是-1
//那么就证明前面连个屁的对应都没有
//甚至可能连字符都没有
//再往前倒腾也不太现实
//那就只能向后来一位
//即next[j+1]=k+1
//那如果我们现在看到的两个字符相同
//比如:
//A C D A C D C
// k j j+1
//那么前面是一一对应的
//就是k和k前面的东西
//和k+1~j的地方已经对过了
//能和k+1~j对上的主串部分
//就一定能和0~k的部分对上
//所以如果在j+1的地方出了岔子
//那就可以直接把0~k忽略
//直接k+1一步到位
//所以此时next[j+1]=k+1
}
else{
//如果不相等了
//比如:
//A B A C D A B A B C
// k j j+1
//每一个循环的宗旨都是求出next[j+1]
//所以j的位置不能动,但是还对不上
//所以就要单独动k
//也就是调整移动的长度
//这就需要我们调整开始的位置
//匹配长度会不可避免的变小
//但无论k怎么变
//它都会在我们已经对应好的串里
//通俗地说
//是在用前缀的前缀匹配后缀的后缀
//而在那个已经匹配出来的串子里
//是有一个更短也能100%对的缀的
//它的串尾的下标就是next[k]
//那直接让他滚过去不就得了
k=nexT[k];
}
}
}
int main(){
while(1){
cin>>t;//输入主串
if(t=="#"){//结束了
break;//再见
}
cin>>p;//输入子串
t0=t.size();
p0=p.size();
hnext(p,p0);//把对应的next找出来
printf("%d\n",KMP(t,t0,p,p0));
//算完输出
}
return 0;
}

 




016(剪花布条)(KMP)的更多相关文章

  1. HDU 2087 - 剪花布条 - [KMP算法]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  2. HDU 2087 剪花布条 (KMP 不允许重叠的匹配)

    题目链接 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Inp ...

  3. hdu 2087剪花布条 (KMP入门 子串出现的次数和子串个数)

    剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. C - 剪花布条 (KMP例题)

    一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?  Input输入中含有一些数据,分别是成对出现的花布条和 ...

  5. HDU 2087 剪花布条(字符串匹配,KMP)

    HDU 2087 剪花布条(字符串匹配,KMP) Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出 ...

  6. (KMP)剪花布条 -- hdu -- 2087

    http://acm.hdu.edu.cn/showproblem.php?pid=2087 剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory ...

  7. HDU 2087 剪花布条 (简单KMP或者暴力)

    剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. 「LOJ#10043」「一本通 2.2 例 1」剪花布条 (KMP

    题目描述 原题来自:HDU 2087 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入格式 输入数据 ...

  9. HDU-2087 剪花布条 字符串问题 KMP算法 查匹配子串

    题目链接:https://cn.vjudge.net/problem/HDU-2087 题意 中文题咯 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条, ...

  10. 剪花布条 --HDOJ 2087

    剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. k8s入门之Ingress(七)

    Ingress 的功能其实很容易理解:所谓 Ingress,就是 Service 的"Service",代理不同后端 Service 而设置的负载均衡服务. 一.安装ingress ...

  2. js实现图片懒加载原理

    原理 图片懒加载是前端页面优化的一种方式,在页面中有很多图片的时候,图片加载就需要很多时间,很耗费服务器性能,不仅影响渲染速度还会浪费带宽,为了解决这个问题,提高用户体验,所以就出现了懒加载这种方式来 ...

  3. zookeeper篇-zookeeper客户端和服务端的基础命令

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 前提:我把zookeepee安装在了服务器/usr/local/java ...

  4. FreeRTOS --(11)任务管理之系统节拍

    转载自 https://blog.csdn.net/zhoutaopower/article/details/107146764 前面有了创建任务.启动调度器.任务控制,接下来便开始分析一个 Tick ...

  5. 面试必问的8个CSS响应式单位,你知道几个?

    大家好,我是半夏,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注 点赞 加我微信:frontendpicker,一起学习交流前端,成为更优秀的工程师-关注公众号:搞前端的半夏,了解更多前端知 ...

  6. zabbix 线路质量监控自定义python模块(Mysql版),多线程(后来发现使用协程更好)降低系统消耗

    之前零零碎碎写了一些zabbix 线路监控的脚本,工作中agnet较多,每条线路监控需求不一致,比较杂乱,现在整理成一个py模块,集合之前的所有功能 环境 python3.6以上版本,pip3(pip ...

  7. 渗透:EWSA

    EWSA全称Elcomsoft Wireless Security Auditor.ElcomSoft是一家俄罗斯软件公司,出品过不少密码破解软件,涉及Office.SQL.PDF.EFS等等. EW ...

  8. 渗透:aircrack-ng

    ircrack- NG是一个完整的工具来评估Wi-Fi网络安全套件,功能包括: 监控:数据包捕获和导出数据到文本文件,以供第三方工具进一步处理. 攻击:通过数据包注入回放攻击,去认证,伪造接入点等. ...

  9. 594. Longest Harmonious Subsequence - LeetCode

    Question 594. Longest Harmonious Subsequence Solution 题目大意:找一个最长子序列,要求子序列中最大值和最小值的差是1. 思路:构造一个map,保存 ...

  10. 好客租房6-React脚手架的应用(细节)

    3.2使用react脚手架初始化 npx命令介绍 npm v5.2.0引入的一条命令 目的:提升包内提供的命令行工具的使用体验 原先:先安装脚手架包 再使用这个包中提供的命令 现在无需安装脚手架包 就 ...