H - Power Strings POJ - 2406

本文介绍了一种用于求解字符串最大周期的算法实现,并通过一个具体示例详细解释了其核心逻辑。通过对字符串进行预处理并计算前缀函数,算法能够高效地找到字符串的最长重复模式。

题目传送(http://poj.org/problem?id=2406):

 

题目描述

定义两个字符串s1和s2的乘积s1*s2为将s1和s2连结起来得到的字符串。 
例如:s1="xy",s2="z",那么s1*s2="xyz"。 
由此可以定义s1的幂次:s1^0="",s1^n=s1*s1^(n-1),n>0。

输入

输入包含多组测试数据。 
每组数据由一行构成,包含一个字符串s。 
输入数据以"."结束。

输出

对于每组输入数据输出一行,找出最大的正整数n,使得存在某个字符串a,s = a^n.

样例输入

aaad
aaaa
ababab
.

样例输出

1
4
3

数据范围1≤s的长度≤1,000,000Hint

不要使用cin读取数据
 
 
代码如下(改代码来源于网络):
 
 

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

const int maxn = 1000005;
char s[maxn];
int next[maxn];

int main() {
while(~scanf("%s", s)&&s[0]!='.'){
next[0] = -1;//初始化
int len = strlen(s);//测长;
int i = 0, j = -1;//初始化;
while(i < len){//保证判断完最后一个字符跳出;
//这里本人当时看了很久才看懂,其实只要带几个测试数据跟着代码走一遍就懂了;
/*
大概就是:i,j都是第几个字符,输入的第一个是s[0],所以i初始化为0,
这里的比较是后面的与前面的比较,所以j初始化为-1;
这里比较是先用next[i]=j来记录第i个字符与第j个相等;
然后判断第i个字符与前面第j个字符比较是否相等,若不相等,j复位为-1;
若相等,接着判断i+1与j+1是否相等......
由于第一个字符的角标为0所以这里是先用 next[i]=j来记录第i个字符与第j个相等,
这样的话判断完最后next[len]就是第一个字符到倒数第二个周期的最后一个字符的长度,
用总长度减去next[len]就是剩下的最后一个周期也就是该字符串的最大周期;
最后用总长度除以最大周期就是结果;
*/
if(j == -1 || s[i] == s[j]) next[++ i] = ++ j;
else j = next[j];
}
if(len % (len - next[len]) == 0) printf("%d\n", len / (len - next[len]));
else printf("1\n");
}
return 0;
}

该数据集通过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年1224日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度读数。其数值范围通常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值通常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛·米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛·米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值