• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
锦燕云
博客园    首页    新随笔    联系   管理    订阅  订阅

USACO Section 1.3 : Calf Flac

# 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);
}
posted @ 2009-08-01 18:37  锦燕云  阅读(176)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3