poj 2406 Power Strings

简介: 点击打开链接poj2406 思路:kmp+最小循环节 分析: 1 题目要求的是给定一个字符串找到最小循环节的个数,但是这里有个限制的地方就是如果这个字符串不是刚好由n个最小循环节组成那么就认为一整串才是一个循环节 2 题目说了输入的字符是可打印的,所以应该用gets读入,判断终止的时候用strcmp。

点击打开链接poj2406


思路:kmp+最小循环节


分析:
1 题目要求的是给定一个字符串找到最小循环节的个数,但是这里有个限制的地方就是如果这个字符串不是刚好由n个最小循环节组成那么就认为一整串才是一个循环节
2 题目说了输入的字符是可打印的,所以应该用gets读入,判断终止的时候用strcmp。

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;

#define MAXN 1000010

char pattern[MAXN];
int next[MAXN];

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[i] != pattern[j])
         j = next[j];
      next[i+1] = pattern[i] == pattern[j] ? j+1 : 0;
   }
   int cir = m-next[m];
   if(m%cir == 0)/*刚好由n个最小循环节组成*/
     printf("%d\n" , m/cir);
   else/*否则都是输出1*/
     printf("1\n");
}

int main(){
   while(gets(pattern)){
      if(!strcmp(pattern , "."))
        break;
      getNext();
   }
   return 0;
}




目录
相关文章
|
安全 Linux 数据安全/隐私保护
Linux 文件权限基础:文件和目录权限管理指南
Linux 文件权限基础:文件和目录权限管理指南
1093 0
|
JavaScript 前端开发
前端基础 - JQuery自定义校验器
前端基础 - JQuery自定义校验器
132 0
|
7月前
|
机器学习/深度学习 数据采集 存储
深度学习在DOM解析中的应用:自动识别页面关键内容区块
本文探讨了如何通过深度学习模型优化东方财富吧财经新闻爬虫的性能。针对网络请求、DOM解析与模型推理等瓶颈,采用代理复用、批量推理、多线程并发及模型量化等策略,将单页耗时从5秒优化至2秒,提升60%以上。代码示例涵盖代理配置、TFLite模型加载、批量预测及多线程抓取,确保高效稳定运行,为大规模数据采集提供参考。
180 0
|
前端开发 虚拟化
简单记录使用 ElementPlus 的虚拟化树形控件(el-tree-v2)心得
这篇文章分享了作者使用ElementPlus的虚拟化树形控件`el-tree-v2`的心得,展示了其基本用法和如何通过自定义模板来增强树节点的交互性。
4056 1
简单记录使用 ElementPlus 的虚拟化树形控件(el-tree-v2)心得
|
人工智能 自然语言处理 供应链
阿里云联合伙伴发起“物流智能联盟”
物流行业内首个专注于大模型应用研究与实践的联盟“物流智能联盟”在杭州成立,旨在加速大模型在物流领域落地,用AI助力物流行业增效降本和业务创新。该联盟由阿里云、菜鸟、高德地图、中远海运、东航物流、圆通速递、申通快递、中通快递、德邦快递、G7易流、地上铁、浙江大学智能交通研究所等在2024数智物流峰会上共同成立。
echarts圆环图设置legend数据对齐百分比样式使用rich富文本标签和formatter函数
echarts圆环图设置legend数据对齐百分比样式使用rich富文本标签和formatter函数
1550 0
|
传感器 设计模式 安全
嵌入式底层驱动需要知道的基本知识
嵌入式底层驱动需要知道的基本知识
482 0
|
敏捷开发 安全 jenkins
自动化测试在敏捷开发中的应用:加速迭代,保障质量
【8月更文挑战第2天】自动化测试在敏捷开发中扮演着至关重要的角色。通过提升测试效率、提高测试覆盖率、及时反馈与修复等优势,自动化测试为敏捷开发团队提供了强大的支持。然而,在实施自动化测试的过程中也面临着一些挑战。通过选择合适的测试框架和工具、制定测试计划和策略、持续优化和维护等策略以及遵循最佳实践并克服挑战,我们可以充分发挥自动化测试在敏捷开发中的潜力,为软件质量的提升和快速迭代保驾护航。
|
机器学习/深度学习 IDE 数据可视化
还在老一套?STM32使用新KEIL5的IDE,全新开发模式RTE介绍及使用
还在老一套?STM32使用新KEIL5的IDE,全新开发模式RTE介绍及使用