POJ 1035 Spell checker
2013-04-30 10:52
381 查看
题目链接
兴奋,自己独立做的字符串的题目,1Y,哈哈。
兴奋,自己独立做的字符串的题目,1Y,哈哈。
#include<stdio.h> #include<string.h> typedef struct Dic { char word[20]; int len; } Dic; char check[20]; Dic dic[10009]; int cmp1(int i) { int j,k=0,flag=0; for(j=0; dic[i].word[j]!='\0'&&check[k]!='\0'; ) { if(check[k]==dic[i].word[j]) { k++; j++; } else { flag++; k++; if(flag>1) return 0; } } if(flag==1) return 1; else if(dic[i].word[j]=='\0'&&check[k]!='\0') return 1; else return 0; } int cmp2(int i) { int j,k=0,flag=0; for(j=0; check[j]!='\0'&&dic[i].word[k]!='\0';) { if(check[j]==dic[i].word[k]) { j++; k++; } else { flag++; k++; if(flag>1) return 0; } } if(flag==1) return 1; else if(check[j]=='\0'&&dic[i].word[k]!='\0') return 1; return 0; } int cmp3(int i) { int j,k,flag=0; for(j=0,k=0;check[j]!='\0';j++,k++) { if(check[j]!=dic[i].word[k]) flag++; if(flag>1) return 0; } return 1; } int main() { /*freopen("in.txt","r",stdin);*/ int count=0,lenn,i,flag; while(1) { scanf("%s\n",dic[count].word); if(strcmp(dic[count].word,"#")==0) break; dic[count].len=strlen(dic[count].word); count++; } while(1) { scanf("%s\n",check); flag=0; if(strcmp(check,"#")==0) break; lenn=strlen(check); for(i=0; i<count; i++) { if(dic[i].len==lenn&&strcmp(dic[i].word,check)==0) { flag=1; printf("%s is correct\n",check); break; } } if(flag==1) continue; printf("%s: ",check); for(i=0; i<count; i++) { if(dic[i].len+1==lenn) { if(cmp1(i)) { flag++; if(flag==1) printf("%s",dic[i].word); else printf(" %s",dic[i].word); } } else if(dic[i].len-1==lenn) { if(cmp2(i)) { flag++; if(flag==1) printf("%s",dic[i].word); else printf(" %s",dic[i].word); } } else if(dic[i].len==lenn) { if(cmp3(i)) { flag++; if(flag==1) printf("%s",dic[i].word); else printf(" %s",dic[i].word); } } } putchar('\n'); } return 0; }写的比较麻烦,分2大种情况,一种是可以在字典中找到相同的,第二种是找不到相同的,第二种又可以分3 种情况,1,相同的长度,只有一个字母不同;2,字典中的单词比要查的多一个字母,其余的都相同‘;3,要查的单词比字典中的单词多一个字母,其余的都相同。主要是这3种情况的判断。
相关文章推荐
- POJ 1035 Spell checker
- poj 1035 Spell checker
- poj 1035 Spell checker
- poj 1035 Spell checker
- poj 1035 Spell checker
- poj 1035 Spell checker
- POJ 1035, Spell checker
- POJ 1035 Spell checker
- POJ 1035 Spell checker
- poj 1035 Spell checker
- POJ 1035 Spell checker
- poj 1035 Spell checker
- poj 1035 Spell checker
- poj 1035 Spell checker
- POJ 1035 Spell checker
- POJ 1035 Spell checker
- POJ 1035 Spell checker
- POJ 1035:Spell checker
- POJ:1035 Spell checker
- POJ 一 1035 Spell checker