• 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]==32return (1);
       
    if (s[y]-s[x]==32return (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);
    }
  • 相关阅读:
    99年人民币冠号大全
    9910的5种水印冠号发行量分布图
    儿童、青少年长身高的注意事项
    钱币评级流程与方法
    99版人民币收藏价值分析
    四、五版币冠字号发行量统计排行
    如何收藏第四套人民币大全套
    第四套荧光钞大全介绍
    小程序加载中提示实现
    微信小程序navigateBack如何带参数
  • 原文地址:https://www.cnblogs.com/vistach/p/1536641.html
Copyright © 2020-2023  润新知