車企頻頻佈局動力電池,但仍無法拋棄供應商
阿新 • • 發佈:2021-06-09
#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; }