hdu 2087 剪花布条
来源:互联网 发布:魔域灵药详细数据 编辑:程序博客网 时间:2024/05/22 10:51
点击打开链接hdu2087
分析:
1 题目要求的是给定一个文本串和给定一个模式串,求文本串中有几个模式串。
2 注意文本串为"aaaaaa",模式串"aa"的时候,ans = 3 而不是5。
代码:
#include<algorithm>#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define MAXN 1010int ans;char text[MAXN];char pattern[MAXN];int next[MAXN];/*求next数组*/void getNext(){ int m = strlen(pattern); next[0] = next[1] = 0; for(int i = 1 ; i < m ; i++){ int j = next[i]; while(j && pattern[j] != pattern[i]) j = next[j]; next[i+1] = pattern[i] == pattern[j] ? j+1 : 0; }}/*匹配*/void find(){ ans = 0; int m = strlen(pattern); int n = strlen(text); int j = 0;/*模式串的下标*/ for(int i = 0 ; i < n ; i++){ while(j && pattern[j] != text[i]) j = next[j]; if(pattern[j] == text[i]) j++; if(j == m){ ans++; j = 0;/*这个地方注意防止出现输入aaaaaa aa 输出5的情况*/ } } printf("%d\n" , ans);}int main(){ while(1){ scanf("%s" , text); if(!strcmp(text , "#")) break; scanf("%s" , pattern); getNext(); find(); } return 0;}
- 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剪花布条
- HDU 2087剪花布条
- HDU 2087 剪花布条
- Java的身份证号码工具类
- Java编程中“为了性能”尽量要做到的一些地方
- 整数输出到txt文件
- 二十一、继承(四)@class命令
- Cocos2d-x初入学堂(8)-->CCLabel菜单项
- hdu 2087 剪花布条
- Could not open registry key 'Software\JavaSoft\Java Runtime Environment'的解决办法
- listview 按数字大小排序
- 一些Linux小知识
- 二十二、继承(五)一种物件中每一个 都包含 另外一种物件
- Android中后台定时任务实现,即时数据同步问题思考!
- 快排到底有多快?元芳,你还看吗?
- 乒乓球底板的选择
- 二十三、继承(六)重写 措施