Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

一直WA, discuss里所有推荐的数据也都试过了,还是出错,, 求高手指教

Posted by seu_cose at 2012-01-12 10:50:11 on Problem 1035
方法就是暴力搜索, add,replace, delete方法
#include "stdio.h"
struct thedic{
     char wordname[18];
     int thelen;
    }thedic_p[10100];
int i =0;
int p =0;
int x=0;
int j,count,len,mywordlen,totalnumber;
char myword[18];
char * tempword;
char* tempmyword;
char wordtopass[18];

//Replace one character
void replace(const char * wordpro,const char * dicword){
         int count =0;
         tempword = dicword;
         tempmyword = wordpro;
         for(j=0;j<strlen(tempword);j++){
             if(tempmyword[j] != tempword[j])count++;
             if(count > 1)return;
         }
         printf(" %s",tempword);
    }

//Add one character to myword
void add(const char * wordpro,const char *dicword){
         tempword = dicword;
         tempmyword = wordpro;
         for(j=0;j<strlen(tempword);j++){
             if(tempmyword[j] != tempword[j]){
                len = strlen(tempmyword);
                tempmyword[len+2] ='\0';
                while(len-- > j){
                      tempmyword[len+1]=tempmyword[len];
                }
                tempmyword[j] = tempword[j];
                if(!strcmp(tempmyword,tempword)){
                  printf(" %s",tempword);
                }
                return;
             }
        }
        return;
    }

//Delete one character from myword
void deleteone(const char * wordpro,const char * dicword){
        tempword = dicword;
        tempmyword = wordpro;
         for(j=0;j<strlen(tempmyword);j++){
             if(tempmyword[j] != tempword[j]){
                len = strlen(tempmyword);
                if(j<(len-1)){
                while(j++ < (len-1)){
                      tempmyword[j-1]=tempmyword[j];
                      tempmyword[j] ='\0';
                }
                }
                else if(j==(len-1)){
                      tempmyword[j] ='\0';
                }
                if(!strcmp(tempmyword,tempword)){
                  printf(" %s",tempword);
                }
                return;
             }
        }
        return;
    }

int main(void) {
    #ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
    #else
    #endif
    while(scanf("%s",thedic_p[i++].wordname)){
          if(!strcmp(thedic_p[i-1].wordname,"#")){
          totalnumber = i-1;
          break;
          }
          thedic_p[i-1].thelen= strlen(thedic_p[i-1].wordname);
    }
nextwords:
     for(;;){
        scanf("%s",myword);
        if(!strcmp(myword,"#"))break;
        mywordlen=strlen(myword);

        for(p=0;p<totalnumber;p++){
            if(!strcmp(myword,thedic_p[p].wordname)){
            printf("%s is correct\n",myword);
            goto nextwords;
            }
        }
        printf("%s:",myword);
        for(p=0;p<totalnumber;p++){
            x=0;
            while(wordtopass[x++] = myword[x++]);
            wordtopass[x]='\0';
            if(abs(mywordlen-thedic_p[p].thelen)>1)continue;
            if(mywordlen==thedic_p[p].thelen){
               replace(wordtopass,thedic_p[p].wordname);
               continue;
            }
            if(mywordlen > thedic_p[p].thelen){
               deleteone(wordtopass,thedic_p[p].wordname);
               continue;
            }
            else{
               add(wordtopass,thedic_p[p].wordname);
               continue;
            }
        }
        printf("\n");

     }
     return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator