您的位置:首页 > 其它

USACO Section 1.3 : Calf Flac

2009-08-01 18:37 267 查看
# include <stdio.h>
char s[20001],maxwords[2001];
int maxlen=0,len;
int right (int i)
{
if (((s[i]<='Z')&&(s[i]>='A'))||((s[i]<='z')&&(s[i]>='a')))
return (1);
return (0);
}

int copy(int lx,int rx)
{
int i,j;
for (i=lx,j=0;i<=rx;i++,j++)
maxwords[j]=s[i];
maxwords[j]='\0';
return (0);
}

int wordcmp (int x,int y)
{
if (s[x]==s[y]) return (1);
if (s[x]-s[y]==32) return (1);
if (s[y]-s[x]==32) return (1);
return (0);
}

int huiwen (int lx,int rx)
{
int i,j,total;
i=lx,j=rx;
if (i==j) total=-1;
else total=0;
while (i>=0&&j<=len)
{
for (;i>=0&&!right(i);i--);
for (;j<=len&&!right(j);j++);
if (!wordcmp(i,j))
{
if (total>maxlen)
{
maxlen=total;
j--;
for (i++;!right(i);i++);
i--;
copy(i,j);
}
return (0);
}
total+=2;
if (total>maxlen)
{
maxlen=total;
copy(i,j);
}
i--;
j++;
}
return (0);
}

main ()
{
FILE *in=fopen ("calfflac.in","r");
FILE *out=fopen("calfflac.out","w");
int i,j;
for(i=0;!feof(in);i++)
s[i]=fgetc(in);
s[i]='\0';
len=strlen(s);
for (i=0;i<len;i++)
{
if (right(i))
{
huiwen (i,i);
for (j=i-1;j>-0&&!right(j);j--);
if (j>=0) huiwen(j,i);
for (j=i+1;j<=len&&!right(j);j++);
if (j<=len) huiwen (i,j);
}
}
fprintf (out,"%d\n%s\n",maxlen,maxwords);
fclose(in);
fclose(out);
exit(0);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: