社区讨论

P1210 WA24求助

P1210[USACO1.3] 最长的回文 Calf Flac参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo8nn3sr
此快照首次捕获于
2023/10/27 21:34
2 年前
此快照最后确认于
2023/10/27 21:34
2 年前
查看原帖
rt,望大佬帮助,谢谢! 上WA代码:
CPP
#include <bits/stdc++.h>
using namespace std;
int pos[22022];
int maxn=-1,t;
void detect(string s,int i)
{
	int cnt,r,l;
	if (s[i-1]==s[i]&&s[i+1]!=i)
	{
		cnt=2,l=i-2,r=i+1;
	}
	if (s[i+1]==s[i]&&s[i-1]!=i)
	{
		cnt=2,l=i-1,r=i+2;
	}
	if ((s[i]!=s[i-1]&&s[i]!=s[i+1])||(s[i-1]==s[i]&&s[i]==s[i+1]))
	{
		cnt=1,l=i-1,r=i+1;
	}
	while(l>=0&&r<s.length())
	{
		//cout << l << " " << r << endl;
		if (s[l]==s[r]) cnt+=2;
		else break;
		l--,r++;
	}
	if (cnt>maxn)
	{
		t=l+1;
		maxn=cnt;
	}
	return;
}
int main()
{
	string s,s1;
	getline(cin,s);
	int cur=0;
	for (int i=0;i<s.length();i++)
	{
		if (isalpha(s[i]))
		{
			s1+=tolower(s[i]);
			pos[cur]=i;
			cur++;
		}
	}
	//cout << s1 << endl;
	for (int i=1;i<s.length()-1;i++)
	{
		detect(s1,i);
		//cout << i << endl;
	}
	cout << maxn << endl;
	//cout << t << endl;
	for (int i=pos[t];i<=pos[t+maxn-1];i++)
	{
		cout << s[i];
	}
	cout << endl;
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...