剪花布条

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11258    Accepted Submission(s): 7220

Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
 
Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
 
Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。
 
Sample Input
abcde a3 aaaaaa aa #
 
Sample Output
0 3
 

题解:kmp里面就找了一次,如果一次匹配成功就结束,进行下次匹配,此处用了递归;strstr也可以做。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。.....................................................................................................

................................................................................................................................

...................................................。。。。。。。。。。。。。。。。。。。。。。

代码:

 #include<stdio.h>
#include<string.h>
const int MAXN=;
char bigclo[MAXN],smaclo[MAXN];
int next[MAXN],answer;
void findnext(){
int i=,j=-;
next[i]=j;
while(smaclo[i]){
if(j==-||smaclo[i]==bigclo[j]){
i++;j++;
next[i]=j;
}
else j=next[j];
}
}
void kmp(int x){
int j=;
while(bigclo[x]){
if(j==-||bigclo[x]==smaclo[j]){
j++;x++;
if(!smaclo[j]){
answer++;break;
}
}
else j=next[j];
}
if(!smaclo[j])kmp(x);
}
int main(){
while(~scanf("%s",bigclo),strcmp(bigclo,"#")){answer=;
scanf("%s",smaclo);
findnext();
kmp();
printf("%d\n",answer);
}
return ;
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
#define mem(x,y) memset(x,y,sizeof(x))
#define SI(x) scanf("%d",&x)
#define PI(x) printf("%d",x)
#define P_ printf(" ")
const int INF=0x3f3f3f3f;
const int MAXN=;
char s[MAXN];
char ss[MAXN];
int p[MAXN];
int N;
void getp(){
int i=,j=-;
p[]=-;
while(i<strlen(ss)){
if(j==-||ss[i]==ss[j]){
i++;j++;
p[i]=j;
}
else j=p[j];
}
} void kmp(int& ans){
getp();
int j=,i=;
int len=strlen(ss);
while(i<strlen(s)){
if(j==-||ss[j]==s[i]){
i++;j++;
if(j==len){
ans++;j=;
}
}
else j=p[j];
}
} int main(){
while(scanf("%s",s),strcmp(s,"#")){
scanf("%s",ss);
int ans=;
kmp(ans);
printf("%d\n",ans);
}
return ;
}

剪花布条(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. Java中Array.sort()的几种用法

    ****************************************************** * 精品书籍推荐:<Java从入门到经通> * 本书系统全面.浅显易懂,非常适 ...

  2. tomcat https 未测试成功的版本

  3. ntp服务器池列表

    CentOS: 0.centos.pool.ntp.org 1.centos.pool.ntp.org 2.centos.pool.ntp.org 国内可用的 ntp.fudan.edu.cn 复旦 ...

  4. PHP MySQL 连接数据库 之 Connect

    连接到一个 MySQL 数据库 在您能够访问并处理数据库中的数据之前,您必须创建到达数据库的连接. 在 PHP 中,这个任务通过 mysql_connect() 函数完成. 语法 mysql_conn ...

  5. asp.net 错误处理

    一.从客户端(...)中检测到有潜在危险的 Request.Form 值.(如图) 解决办法: 1.为 c:/windows/temp 文件夹 设置 IIS_Iusers 可读写权限 (可解决部分问题 ...

  6. Davinci开发板DM368 nandwrite.c简要分析

    #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <limits.h ...

  7. H5 视频直播相关技术

    一.移动视频直播发展 大家首先来看下面这张图: 可以看到,直播从 PC 到一直发展到移动端,越来越多的直播类 App 上线,同时移动直播进入了前所未有的爆发阶段,但是对于大多数移动直播来说,还是要以 ...

  8. unix系统非roo账号安装JDK

    AIX系统用户rusky(非root用户,没有权限修改/etc/profile和/etc/environment文件 )直接解压JDK.zip文件,解压后把JAVA目录拷贝到/home/rusky目录 ...

  9. Ascll

    ascll - 概述 ASCII码(American Standard Code for Information Interchange, 美国标准信息交换码).   信息编码就是将表示信息的某种符号 ...

  10. 从客户端(Content="<p>666</p>")中检测到有潜在危险的 Request.Form 值。

    出现:从客户端(Content="<p>测试</p>")中检测到有潜在危险的 Request.Form 值. 一般是在线编辑器有HTML标签的,我是用的MV ...