USACO 1.3 Calf Flac(calfflac)
为了提高使用 C++ 语言写题的能力,最近在用 C++ 语言写 USACO 题目,逐渐适应新语言,另外也复习基本忘完的 OI 知识。
这道题我完全采用的暴力搜索方法,代码也写得毫无美感。
/*
LANG: C++
PROG: calfflac
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
char lower(char source)
{
if (source < 'a')
return source + 'a' - 'A';
return source;
}
int main(void)
{
ifstream fin("calfflac.in");
ofstream fout("calfflac.out");
char c;
string s("");
while (!fin.eof ())
{
c = fin.get();
s += c;
}
int max = 0, ms = 0, l, r, me = 0, len = s.length (), all = 0, maxall = 0;
for (unsigned int i = 0; i < len; ++i)
{
if (!isalpha(s[i]))
continue;
l = i; r = i;
int j = 0;
all = 1;
while (true)
{
++r; --l;
if ((r >= len) || l < 0)
break;
while (!isalpha(s[r]))
{
++r;
if (r >= len)
break;
}
while (!isalpha(s[l]))
{
--l;
if (l < 0)
break;
}
all += 2;
++j;
if (r >= len || l < 0)
break;
if (lower(s[r]) != lower(s[l]))
break;
if (maxall < all)
{
max = j;
ms = l;
me = r;
maxall = all;
}
}
l = i; r = i + 1;
while (!isalpha(s[r]))
{
r++;
if (r >= len)
break;
}
if (r >= len)
continue;
if (s[r] != s[l])
continue;
j = 0;
all = 2;
while (true)
{
++r; --l;
if ((r >= len) || l < 0)
break;
while (!isalpha(s[r]))
{
++r;
if (r >= len)
break;
}
while (!isalpha(s[l]))
{
--l;
if (l < 0)
break;
}
all += 2;
++j;
if (r >= len || l < 0)
break;
if (lower(s[r]) != lower(s[l]))
break;
if (maxall < all)
{
max = j;
ms = l;
me = r;
maxall = all;
}
}
}
fout << maxall << endl << s.substr(ms, me - ms + 1) << endl;
return 0;
}
题外话:我帮你整理了包括 AI 写作、绘画、视频(自媒体制作)零门槛 AI 课程 + 国内可直接顺畅使用的软件。想让自己快速用上 AI 工具来降本增效,辅助工作和生活?限时报名。
© 转载需附带本文链接,依据 CC BY-NC-SA 4.0 发布。