usaco 1.3.3
usaco 1.3.3我自己的程序,现在我都看不懂了
各位高手看看错在哪?
/*
ID: simon532
PROG: calfflac
LANG: C++
*/
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("calfflac.in");
ofstream fout("calfflac.out");
int main()
{
char a[5000];
int b[5000];
int c,d,l=0;
while(!fin.eof())
{
fin.get(a[l]);
c=a[l]-'A'+1;
if(c<0)
b[l]=0;
else
{
if(c<=26)
b[l]=c;
else
{
if(c>=33&&c<=59)
b[l]=c-32;
else
b[l]=0;
}
}
l++;
}
c=0,d=0;
int q,h,e,be,en,st,nd;
for(int i=1;i<strlen(a);i++)
{
q=1;h=1;c=0;e=0;
if(b[i]!=0)
{
for(;e==0;)
{
if(b[i-q]!=0&&i-q>=0)
{
if(b[i+h]!=0&&i+h<strlen(a))
{
if(b[i-q]==b[i+h])
{
c++;
st=q;
q++;
nd=h;
h++;
}else
{
if(c>d)
{
d=c;
e++;
be=i-st;
en=i+nd;
}
else
e++;
}
}
else
h++;
}
else
q++;
/* if(i-q<0||i+h>strlen(a))
{
if(c>d)
{
d=c;
e++;
be=i-st;
en=i+nd;
}else
e++;
}*/
}
}
}
d=d*2+1;
int u,v=0,st1,nd1,be1,en1;
for(int i=1;i<strlen(a);i++)
{
h=1;c=0;e=0;u=i;
if(b[i]!=0)
{for(;e==0;)
{
if(b[u]!=0&&u>=0)
{
if(b[i+h]!=0&&i+h<strlen(a))
{
if(b[u]==b[i+h])
{
c++;
st1=u;
u--;
nd1=h;
h++;
}
else
{
if(c>v)
{
v=c;
e++;
be1=st1;
en1=i+nd1;
}
else
e++;
}
}
else
h++;
}
else
u--;
/* if(u<0||i+h>strlen(a))
{
if(c>v)
{
v=c;
e++;
be1=st1;
en1=i+nd1;
}
else
e++;
}*/
}
}
}
v=(v-3)*2;
if(v>d)
{
fout<<v<<endl;
for(int i=be1;i<=en1;i++)
fout<<a[i];
}
else
{
fout<<d<<endl;
for(int i=be;i<=en;i++)
fout<<a[i];
}
fout<<endl;
fin.close();
fout.close();
return 0;
}