初一进阶班(字符串算法二)t3题解
  • 板块学术版
  • 楼主Zyh_AKer
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/12/28 21:04
  • 上次更新2023/12/28 21:11:56
查看原帖
初一进阶班(字符串算法二)t3题解
1034647
Zyh_AKer楼主2023/12/28 21:04

t3题目穿送门

#include<bits/stdc++.h>
using namespace std;
char s[1000001];
void int_nxt()
{
	int j=-1;
	nxt[0]=-1;
	for (int i=1;i<m;i++)
	{
		while (j>=0 && s[j+1]!=s[i])j=nxt[j];
		if (s[j+1]==s[i])j++;
		nxt[i]=j;
	} 
}
int main()
{
	while (1)
	{
		cin>>s;
		m=strlen(s);
		if (m==1 && s[0]=='.')break;
		int_nxt();
		if (len%(m-nxt[m])==0)
		{
			printf("%d",len/(m-nxt[m]));
		}
		else
		{
			printf("1");
		}
	}
}

如果不理解,可以到UVA10298 看题解,里面写得很详细。

2023/12/28 21:04
加载中...