POJ 1961 KMP(当前重复次数)
题意:
前缀重复次数,举个例子,aaa 2的位置2个a,3的位置3个a
abcabcabc 6的位置两个abcabc,9的位置三个abcabc....
思路:
KMP基础题目之一,直接利用的是next数组的特点,对于当前点i,
i - next[i] 表示的是最小重复子串长度,如果 i - next[i] 不等于0,同时i % (i - next[i]) == 0说明当前字符是循环子串的最后一位,那么tmp = i / (i - next[i]) 表示的是循环次数,如果tmp>1直接输出i i / (i - next[i])就行了,就说这么多吧,只要理解了next数组就肯定会这个题目了。
#include<stdio.h>
#include<string.h>#define N 1000000 + 100int next[N];
char str[N];void get_next(int m)
{int j ,k;j = 0 ,k = -1;next[0] = -1;while(j < m){if(k == -1 || str[j] == str[k])next[++j] = ++k;else k = next[k];}return ;
}int main ()
{int m ,i ,cas = 1;while(~scanf("%d" ,&m) && m){scanf("%s" ,str);get_next(m);printf("Test case #%d\n" ,cas ++);for(i = 1 ;i <= m ;i ++){if(i - next[i] && i % (i - next[i]) == 0){int tmp = i / (i - next[i]);if(tmp > 1)printf("%d %d\n" ,i ,tmp);}}printf("\n");}return 0;
}
POJ 1961 KMP(当前重复次数)相关推荐
- javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...
- Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置
面试题查找重复元素并打印重复次数和重复位置,一顿懵逼,回来死磕写下来,打印指定重复次数和最大次数,其他在此基础上可以再更新 package sort; import org.testng.annota ...
- 找出重复最多的字符php,javascript获取重复次数最多的字符_javascript技巧
javascript获取重复次数最多的字符 /** 取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa'; //创建字 ...
- android 补间动画重复次数,9.1.5 setRepeatCount方法:设置重复次数
9.1.5 setRepeatCount方法:设置重复次数 [功能说明]该方法用于设置一个动画效果重复执行的次数.Android系统默认每个动画仅执行一次,通过该方法可以设置动画执行多次. [基本语 ...
- 海量数据选取重复次数最多的n个
最近刚换工作,面试的时候有一道题觉得很有意思,大致是通过web日志分析出网站最多的10条http请求的ip地址.页面等,我想这个可以归纳为海量数据选取重复次数最多的n个,跟网上看过的一题很类似:有10 ...
- 利用Linux命令行进行文本按行去重并按重复次数排序yes
http://www.tuicool.com/articles/fEzERj Linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linu ...
- 51nod 1277 KMP 前缀出现次数
51NOD 1277:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1277 跟HDU 6153还挺像的:http://w ...
- #1419 : 后缀数组四·重复旋律4 (重复次数最多的连续字串)
题目链接 思路 如何求一个串中的最大重复次数? 枚举循环节的大小,判断它是否合法. 如何快速判断循环节合法? LCP(LCP(LCP(原串, 原串−-−循环节)))是否完全匹配. 如何快速求串AAA和 ...
- 打印出重复的姓名和重复的次数,并按重复次数排序:
读取文件内容, 打印出重复的姓名和重复的次数,并按重复次数排序: package com;import java.io.*; import java.util.*;/* 打印出重复的姓名和重复的次数, ...
最新文章
- Python基础之数据类型(一)
- 【PAT乙级】 1010 一元多项式求导 (25 分)
- 动态规划算法分析和理解:最长公共子序列、公共子字符串
- java http 接口制定_java調用http接口
- Some about me
- jzoj5231-序列问题【分治】
- 利用人工智能提升团队包容性
- 面试题——C++/C
- 寒假作业3(传说中的写软件)
- (三)线程同步工具集_1---控制线程并发访问一个资源
- [asp.net控件]asp.net页面传值汇总
- 安装SQL2005后SQL Server Management Studio 没有出来的解决方案
- 网络蜘蛛及搜索引擎基本原理
- 《物联网开发实战》05 系统实例:怎样设计一个简易物联网系统?(学习笔记)
- (一)事务与并发控制
- Linux 快速原型工具 Pencil
- undefined == null的正确解释
- 《计算机网络 第7版》第9章 无线局域网的物理层和MAC层
- Android OpenCV应用篇三:提取图片中的文字
- 信息系统开发与管理【一】之 管理信息系统导论