POJ-2752 Seek the Name, Seek the Fame
2016-03-08 19:53
309 查看
一道简单的KMP算法的题,只要了解KMP的原理就能解出来
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; #define maxn 400005 int next[maxn]; int ans[maxn]; void kmp(string &s) { next[0] = -1; int k = -1, p = 0; while(p < s.size()) { if(k == -1 || s[k] == s[p]) { k++; p++; next[p] = k; } else k = next[k]; } } int main() { // freopen("in.txt", "r", stdin); string s; while(cin >> s) { kmp(s); int n = 0, t = s.size(); while(next[t]) { ans[n++] = next[t]; t = next[t]; } for(int i = n-1; i >= 0; i--) cout << ans[i] << " "; cout << s.size() << endl; } return 0; }
相关文章推荐
- Kafka入门经典教程
- JDBC实现用于操作数据库Mysql的工具类JDBCTools
- bzoj3575[Hnoi2014]道路堵塞
- 按三角形逆序输入顶点来计算多边形面积
- MyBatis初探
- Html5-Video标签以及字幕subtitles和captions的区别
- git提交代码步骤
- 使用BufferedInputStream的好处
- centos72开启远程xwindow
- UICollectionView如果在数据不够一屏时上下滚动
- JAVA基础(二)面向对象思想
- Android开发之实现强制下线功能(上)
- USB原理简单叙述
- 类似于 合唱队形 —— hdu 1257 最少拦截系统
- 强大的vim配置文件
- 剑指offer:字符串的排列
- BZOJ1433假期的宿舍
- 蓝桥杯练习系统历届试题 错误票据
- 【iOS问题】The file “XXX.app” couldn’t be opened because you don’t have permission to view it.
- 如何解决double和float精度问题