| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我一开始用G++这样子写的,TLE了。改成C就是204ms。Re:官方的解法In Reply To:官方的解法 Posted by:donkeyinacm at 2009-11-26 13:48:50 > #include <iostream>
>
> using namespace std;
>
> #define MAX 10010
> #define MAXL 20
>
> char D[MAX][MAXL];
> int Dp;
> char C[MAXL];
>
>
>
>
>
>
>
> bool replace(char *A,char *B)
> {
> int l1=strlen(A);
> int l2=strlen(B);
> int i=0;
> if(l1==l2)
> {
> while(i<l1&&A[i]==B[i])
> i++;
> while(++i<l1)
> if(A[i]!=B[i])
> return false;
> }else if(l1==l2+1)
> {
> while(i<l2&&A[i]==B[i])
> i++;
>
> while(++i<l1)
> if(A[i]!=B[i-1])
> return false;
> }else if(l1+1==l2)
> {
> while(i<l1&&A[i]==B[i])
> i++;
>
> while(++i<l2)
> if(A[i-1]!=B[i])
> return false;
> }else
> return false;
>
> return true;
> }
>
> int main()
> {
> //freopen("c:/aaa.txt","r",stdin);
>
> Dp=0;
> while(scanf("%s",D[Dp++])&&strcmp(D[Dp-1],"#")!=0)
> ;
> Dp--;
> while(scanf("%s",C)&&strcmp(C,"#")!=0)
> {
> bool Found=false;
> for(int i=0;i!=Dp;i++)
> if(strcmp(D[i],C)==0)
> {
> Found=true;
> break;
> }
>
> if(Found)
> printf("%s is correct\n",C);
> else
> {
> printf("%s:",C);
> for(int i=0;i!=Dp;i++)
> if(replace(D[i],C))
> printf(" %s",D[i]);
> printf("\n");
> }
>
>
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator