| ||||||||||
| 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 | |||||||||
Re:pku2934 why wrong answerIn Reply To:pku2934 why wrong answer Posted by:ync at 2006-08-06 17:27:18 > #include<stdio.h>
> #include<string.h>
> #include<stdlib.h>
> char word[10005][30];
> int N,len[10005];
> /*
> int sort(const void *a,const void *b)
> {
> char *x,*y;
> x=(char *)a; y=(char *)b;
> return strcmp(x,y);
> }
> int find(char *st)
> {
> int i,k,x,x1,x2;
> x1=1; x2=N;
> while(x1<=x2)
> {
> x=(x1+x2)/2;
> k=strcmp(st,word[x]);
> if(k==0) return x;
> if(k>0) x1=x+1;
> else x2=x-1;
> }
> return 0;
> } */
> int find2(char *st)
> {
> int i;
> for(i=1;i<=N;i++)
> {
> if(strcmp(st,word[i])==0) return i;
> }
> return 0;
> }
> int letterMissing(char *st,char *ch,int k,int L)
> {
> int i,j,flag;
> flag=0;
> if(k==1)//L>len
> { flag=0;
> for(i=0,j=0;i<L;i++)
> {
> if(st[i]!=ch[j]&&flag==0) { flag=1; continue; }
> if(st[i]!=ch[j]) return 0;
> j++;
> }
> return 1;
> }
> else if(k==-1)
> { flag=0;
> for(i=0,j=0;i<L;j++)
> {
> if(st[i]!=ch[j]&&flag==0) { flag=1; continue; }
> if(st[i]!=ch[j]) return 0;
> i++;
> }
> return 1;
> }
> return 1;
> }
> int letterWrong(char *st,char *ch,int L)
> {
> int i,j,flag;
> flag=0;
> for(i=0;i<L;i++)
> {
> if(st[i]!=ch[i]&&flag==0) { flag=1; continue; }
> if(st[i]!=ch[i]) return 0;
> }
> return 1;
> }
> int orderWrong(char *st,char *ch,int L)
> {
> int i,j,flag;
> flag=0; L--;
> for(i=0;i<L;i++)
> {
> if(st[i]!=ch[i]&&flag==0)
> {
> if(st[i+1]==ch[i]&&st[i]==ch[i+1])
> {
> i++;
> }
> else return 0;
>
> flag=1; continue;
> }
> if(st[i]!=ch[i]) return 0;
> }
> return 1;
> }
> void process(char *st)
> {
> int L,i,j,k,flag;
> L=strlen(st);
> flag=0;
> for(i=1;i<=N;i++)
> {
> k=L-len[i];
> if(k==1||k==-1)
> {
> // printf("kkk==%d\n",k);
> if(letterMissing(st,word[i],k,L)) { flag=1; break; }
> }
> else if(k==0)
> {
> if(letterWrong(st,word[i],L)) {flag=1; break;}
> if(orderWrong(st,word[i],L)) {flag=1; break;}
> }
> }
> if(flag) printf("%s is a misspelling of %s\n",st,word[i]);
> else printf("%s is unknown\n",st);
> }
> int main()
> {
> int i,j,k,q;
> char st[30];
> scanf("%d",&N);
> for(i=1;i<=N;i++) scanf("%s",word[i]);
> // qsort(word+1,N,sizeof(word[1]),sort);
> for(i=1;i<=N;i++) len[i]=strlen(word[i]);
> scanf("%d",&q);
> while(q--)
> {
> scanf("%s",st);
> if(find2(st)) { printf("%s is correct\n",st); continue; }
> process(st);
> }
> return 0;
> }
> /*Sample Input
>
>
> 11
> this
> is
> a
> dictionary
> that
> we
> will
> use
> for
> us
> letter
> 60
> su
> as
> the
> dictonary
> us
> willl
>
> Sample Output
>
>
>
> su is a misspelling of us
> as is a misspelling of is
> the is unknown
> dictonary is a misspelling of dictionary
> us is correct
> willl is a misspelling of will
> */
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator