社区讨论
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 条回复,欢迎继续交流。
正在加载回复...