标签:break ret %s code void 顺序 return 模糊 ring
#include<stdlib.h> #include<stdio.h> #include<string.h> #define MAX 10005 typedef struct node { char a[16]; int len; }node; node te,t[MAX]; int n=0; void pp(node T) { int N[10005]; int p=0; int i,j,k; int now; for(now=0;now<n;now++)//从now节点开始匹配 { //模糊匹配 int count=0; if(t[now].len==T.len) { for(i=0;i<T.len;i++) { if(t[now].a[i]!=T.a[i]) count++; if(count>1) break; } if(count==0) { printf("%s is correct\n",T.a); return; } } else if(t[now].len==T.len+1)//字典比带匹配串长 { for(j=0,k=0;j<t[now].len;j++,k++) { if(T.a[j]!=t[now].a[k]) { j--; count++; if(count>1) break; } } } else if(t[now].len==T.len-1)//字典比待匹配串短 { for(j=0,k=0;j<T.len;j++,k++) { if(t[now].a[j]!=T.a[k]) { j--; count++; if(count>1) break; } } } if(count==1) N[p++]=now;//记录字典的位置 } printf("%s:",T.a); for(j=0;j<p;j++) printf(" %s",t[N[j]].a); printf("\n"); } int main() { while(~scanf("%s",t[n].a)) { if(t[n].a[0]==‘#‘) break; t[n].len=strlen(t[n].a); n++; } while(~scanf("%s",te.a)) { if(te.a[0]==‘#‘) break; te.len=strlen(te.a); pp(te); } return 0; }
标签:break ret %s code void 顺序 return 模糊 ring
原文地址:https://www.cnblogs.com/1328497946TS/p/11051761.html