剪花布条 HDU
来源:互联网 发布:java获取svn版本号 编辑:程序博客网 时间:2024/05/17 03:01
今天做到了相关的题,感觉知识欠缺就想着写个总结加深一下记忆。
首先是今天看到的题:
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?Input:
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,
布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
Output:
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。Sample Input:
abcde a3aaaaaa aa#Sample Output:
03
这个题数据卡的不严,暴力可以很轻松地跑过去。
以下是暴力的写法:
#include<cstdio> #include<iostream>#include<cmath> #include<cstring> using namespace std; char a[1005]; char b[1005]; int main(){ while(scanf("%s",a+1)){ if(a[1]=='#')break; int result=0; scanf("%s",b+1); int len1=strlen(a+1); int len2=strlen(b+1); for(int i=1 ; i<=(len1-len2+1) ; i++){ int t=i; for(int j=1 ; j<=len2 ;){ if(a[t]==b[j]){ t++;j++; if(j == len2+1){j=1;i=i+len2-1;result++;break;} } else{ j=1; break;} } } printf("%d\n",result); } return 0; }不过正所谓暴力肯定不是我们的最终目标,所以我上网查了查。发现还有很多方法。
一 :C语言库里有strstr()可以用。需要头文件#include<cstring> || #include<string.h>例如:strstr(s1,s2);返回s2在s1中的第一个位置(有多个没法),返回类型是char *
二:C++中的string类的find函数例如: string str1 = "asdasd";int a = str1.find("asd",0);最终a = 0 这里返回类型为int,即下标。find里的第二个参数是代表从第几(下标)开始找。
三:Kmp算法,BM算法。
这个比较麻烦,直接上大神传送门 点击打开链接
阅读全文
0 0
- 剪花布条 HDU
- 剪花布条 HDU
- HDU 2087 剪花布条
- HDU 2087 剪花布条
- Hdu 2087 - 剪花布条
- hdu 2087 剪花布条
- HDU 2087 剪花布条
- hdu-2087 剪花布条
- HDU 2087 剪花布条
- hdu 2087 剪花布条
- HDU 2087 剪花布条
- hdu 2087 剪花布条
- HDU 2087 剪花布条
- hdu 2087 剪花布条
- HDU 2087 剪花布条
- hdu 2087 剪花布条
- hdu 2087 剪花布条
- HDU 2087剪花布条
- 算法导论学习笔记之1--从LCS到动态规划
- 机器学习_周志华版_读书笔记_02 模型评估与选择
- 测试上线邮件书写规范
- 程序员必须掌握的8大排序算法(三):简单选择排序
- java append方法
- 剪花布条 HDU
- CodeVS1369 xth 砍树 解题报告【数据结构】【线段树/树状数组】
- 使用java来实现阻塞队列
- pecl是什么 如何在centos下安装pecl
- 鞭策自己,养成个好习惯吧
- Milking Time POJ
- 开关按钮实现日夜模式切换
- 数据结构 单链表
- 如何发布自己的composer并创建正式版本