USACO6.2.1 Calf Flac(calfflac)

来源:互联网 发布:linux项目实战 编辑:程序博客网 时间:2024/06/06 14:13

先吐槽:USACO 6.2开始加的题居然有好多training上第一第二章的……

这道题简单,注意的一点是,判断回文串时不考虑标点什么的但是最后答案要求输出的需要带标点

不多说,上代码


/*ID: xsy97051LANG: C++TASK: calfflac*/#include <cstdio> #include <string> #include <iostream> #include <algorithm> using namespace std; int main(){     char a[20005],b[20005],c;     int ba[20005],d[20005],r=0,rpos=0;     int ai=0,bi=0;         freopen("calfflac.in","r",stdin);    freopen("calfflac.out","w",stdout);while(scanf("%c",&c)!=EOF){          a[ai]=c;          if(c>='a'&&c<='z'||c>='A'&&c<='Z') {              b[bi]=c;              if(c>='A'&&c<='Z')b[bi]+='a'-'A';               ba[bi]=ai;             bi++;           }          ai++;      }     d[0]=1;     for(int i=1;i<bi;i++){             if(b[i]==b[i-d[i-1]-1])d[i]=d[i-1]+2;         else if(b[i]==b[i-1])d[i]=2;         else d[i]=1;         if(d[i]>r){              r=d[i];              rpos=i;         }      }     cout<<r<<endl;     for(int i=ba[rpos-r+1];i<=ba[rpos];i++)    cout<<a[i];         cout<<endl;     return 0;  }


0 0
原创粉丝点击