剪花布条

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

Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
 
Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
 
Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。
 
Sample Input
abcde a3
aaaaaa aa
#
 
Sample Output
0
3
mp算法:
#include<stdio.h>
#include<string.h>
#define MAX 1100
int f[MAX];
char str[MAX],p[MAX];
void getnext()//状态转移函数当目标串与原串失配后可通过f[]直接转移到可匹配位置
{
int i,j;
int len=strlen(p);
f[0]=f[1]=0;
for(i=1;i<len;i++)
{
j = f[i];
while(j && p[i] != p[j])
j = f[j];
f[i+1] = p[i] == p[j]?j+1:0;
}
}
int main()
{
int m,n,j,i;
int s;
while(scanf("%s",str) && str[0] != '#')
{
scanf("%s",p);
getnext();
m=strlen(str);
n=strlen(p);
j=0;s=0;
for(i=0;i<m;i++)
{
while(j&&str[i]!=p[j])
j=f[j];
if(str[i]==p[j])
j++;
if(j>=n)
{
s++;
j=0;
}
}
printf("%d\n",s);
}
}

 常规容易想的思路在原串中对目标串进行逐一扫描,发现相同的记录下来

#include<stdio.h>
#include<string.h>
int main()
{
int m,j,i,la,lb,sum;
char a[1100],b[1100];
while(scanf("%s",a)!=EOF)
{
if(a[0]=='#')
break;
scanf("%s",b);
la=strlen(a);
lb=strlen(b);
sum=0;
for(i=0;i<la;i=i+lb)
{
m=1;
for(j=0;j<lb;j++)
{
if(a[i+j]!=b[j])
{
m=0;
break;
}
}
if(m!=0)
sum++;
}
printf("%d\n",sum);
}
return 0;
}

  

最新文章

  1. iPhone屏幕尺寸/launch尺寸/icon尺寸
  2. 关于纠正 C/C++ 之前在函输内改变 变量的一个错误想法。
  3. WCF入门教程(三)定义服务协定--属性标签
  4. LNMP平台搭建---MySQL安装篇
  5. [游戏模版3] Win32 画笔 画刷 图形
  6. Linux解压安装与卸载
  7. gulp构建工具的安装
  8. Maven学习小结(一 初探)
  9. 韩顺平HTML5教程www.gis520.com
  10. postgresql创建用户
  11. JDK 1.8源码阅读 HashMap
  12. SQLServer之视图篇
  13. you do not have permission to pull from the repository解决方法
  14. 文件操作(CRT、C++、WIN API、MFC)
  15. 【转】Session 过期问题处理
  16. YII缓存整理
  17. 动态标绘演示系统1.0(for OpenLayers3)
  18. 你用 Python 做过什么有趣的数据挖掘项目?
  19. [android] android项目架构
  20. 345. Reverse Vowels of a String翻转字符串中的元音字母

热门文章

  1. php异步请求(可以做伪线程)
  2. yum安装lamp环境
  3. mysqli_fetch_assoc与mysqli_result::fetch_assoc区别
  4. Python正则表达式Regular Expression基本用法
  5. copy,retain,assign,strong,weak的区别
  6. POJ 1035 Spell checker 简单字符串匹配
  7. 开发C# .net时使用的数据库操作类SqlHelp.cs
  8. 关于How,刷墙和亲戚
  9. 微软CSS面试全记录
  10. iOS 常用基础框架