标签:des style blog http color os io java strong
Time Limit: 2000 MS Memory Limit: 65536 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
i is has have be my more contest me too if award # me aware m contest hav oo or i fi mre #
me is correct aware: award m: i my me contest is correct hav: has have oo: too or: i is correct fi: i mre: more me
题意:查找字典
直接模拟替换加减的过程。
比较两个串的长度。要相差为1 的时候才能进行模拟。
模拟的过程就是进行一个个的匹配。
发现失配的次数小于等于 1就可以输出。
分情况:1:相等
2:l1==l2
l1-l2==1 加一
l1-l2==-1 删一
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; char map[10005][55]; char str[55]; int IsOk(int n) { int l1=strlen(str); int l2=strlen(map[n]); int k,i,j; switch(l1-l2) { case 1: k=0; for(i=j=0; i<l1;) { if(str[i]!=map[n][j]) k++,i++; else i++,j++; } if(k==1) return 1; break; case 0: k=0; for(i=j=0; i<l1; i++,j++) { if(str[i]!=map[n][j]) k++; } if(k==1) return 1; break; case -1: k=0; for(i=j=0; j<l2;) { if(str[i]!=map[n][j]) k++,j++; else i++,j++; } if(k==1) return 1; break; } return 0; } int main() { int N=0; int i=0; while(scanf("%s",map[N])&&strcmp(map[N],"#")!=0) N++; while(scanf("%s",str)&&strcmp(str,"#")!=0) { for(i=0; i<N; i++) { if(strcmp(str,map[i])==0) { printf("%s is correct\n"); break; } } if(i==N) { printf("%s:",str); for(int i=0; i<N; i++) if(IsOk(i)) printf(" %s",map[i]); printf("\n"); } } return 0; }
标签:des style blog http color os io java strong
原文地址:http://www.cnblogs.com/zhangying/p/3947601.html