HDU-2087 剪花布条(kmp)
2014-10-25 12:14
323 查看
题目大意很好理解,我就不啰嗦了,直接贴代码。
#include <cstdio> #include <cstring> using namespace std; const int N = 1010; int next ; char tar ,pat ; void getNext() { int j = 0,k = -1; int lenP = strlen(pat); next[0] = -1; while(j < lenP) { if(k == -1 || pat[j] == pat[k]) { j++; k++; next[j] = k; }else { k = next[k]; } } } int kmp(int k) { int posP = 0,posT = k; int lenT = strlen(tar); int lenP = strlen(pat); while(posP < lenP && posT < lenT) { if(posP == -1 || tar[posT] == pat[posP]) { posP++; posT++; }else { posP = next[posP]; } } if(posP < lenP) { return -1; }else { return posT - lenP; } } int main() { while(scanf("%s",tar) != EOF && tar[0] != '#') { scanf("%s",pat); getNext(); int ans = 0,pos = -1; int lenP = strlen(pat); while(1) { int pos = kmp(pos); if(pos != -1) { pos += lenP; ans++; }else { break; } } printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU:2087 剪花布条(KMP)
- 【HDU 2087】 剪花布条(KMP)
- 【HDU-2087-剪花布条】(KMP)
- HDU 2087 剪花布条【KMP,子串出现次数,不可重叠】
- [HDU - 2087] 剪花布条(KMP)
- hdu 2087 剪花布条(KMP)
- hdu-2087-剪花布条(KMP)
- KMP 字符串匹配 SDNU 1100 字符串查找 HDU 2087 剪花布条
- HDU 2087 剪花布条【最长不重复子串】【KMP】【水题】【模板题】
- HDU 2087 剪花布条(KMP 模板题)
- HDU 2087 剪花布条(kmp)
- HDU 2087 剪花布条(KMP匹配裸题)
- HDU 2087 剪花布条(KMP)
- hdu 2087 剪花布条(kmp)
- hdu 2087 剪花布条【KMP】
- hdu 2087 剪花布条(KMP)
- HDU 2087 剪花布条(第一道KMP题)
- HDU 2087 剪花布条(KMP:贪心)
- 【hdu 2087】剪花布条(kmp)
- HDU-2087 剪花布条(KMP不重复字符串匹配次数统计)