Usaco Calf Flac
经过两个多小时的coding,终于磕磕绊绊的过了。其实这个题难的地方不是解法,而是文件的输入输出。因为文件不是在一行,所以以前知道的那些从文件里面输入输出的函数全都不好使。eof这个函数以前没见过,弄了好久才会。接受能力有问题。代码主要是借鉴lrj大哥的,懒得写了。还抄错了,wa了好久。简单题目主要是考察细节的地方,如果比赛肯定遇不到这种简单题。如果说刷通usaco算入门的话,那就不足为奇了。
/*
ID: like_091
PROG: calfflac
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
const int MAX = 20000 + 10;
char a[MAX], b[MAX];
int p[MAX];
int main(void)
{
ifstream fin("calfflac.in");
int t = 0, k = 0, max = 0, c, d;
while (!fin.eof())
{
//如果读取到了文件尾部,返回true
a[t] = fin.get();
if (isalpha(a[t]))
{
p[k] = t;
b[k++] = toupper(a[t]);
}
t++;
}
fin.close();
for (int i = 0; i < k; i++)
{
for (int j = 0; i - j >= 0 && i + j < k; j++)
{
if (b[i - j] != b[i + j])
break;
if (j * 2 + 1 > max)
{
max = j * 2 +1;
c = p[i - j];
d = p[i + j];
}
}
for (int j = 0; i - j >= 0 && i + j < k - 1; j++)
{
if (b[i - j] != b[i + j + 1])
break;
if (j * 2 + 2 > max)
{
max = j * 2 + 2;
c = p[i - j];
d = p[i + j + 1];
}
}
}
ofstream fout("calfflac.out");
fout<<max<<endl;
for (int i = c; i <= d; i++)
fout<<a[i];
fout<<endl;
fout.close();//不过不关闭,是否wa?
return 0;
}
浙公网安备 33010602011771号