标签:
题目链接 http://poj.org/problem?id=1035
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 24142 | Accepted: 8794 |
Description
Input
Output
Sample Input
i is has have be my more contest me too if award # me aware m contest hav oo or i fi mre #
Sample Output
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 #include<stdio.h> 2 #include<iostream> 3 #include<math.h> 4 #include<algorithm> 5 #include<string.h> 6 using namespace std; 7 int jilu[10005]; 8 struct node 9 { 10 char s[20]; 11 int len; 12 }word[10005]; 13 int check(char *a,int lena,node b)//可替换为1,不可替换为0,相等为2 14 { 15 int i,j; 16 if(lena==b.len)//相等或可替换 17 { 18 int buxiangdeng=0; 19 for(i=0;i<lena;i++) 20 { 21 if(a[i]!=b.s[i])buxiangdeng++; 22 if(buxiangdeng>=2)break; 23 } 24 if(buxiangdeng==0)return 2; 25 else if(buxiangdeng==1)return 1; 26 } 27 else if(lena-1==b.len)//可删除 28 { 29 int xiangdeng=0; 30 for(i=0,j=0;i<lena&&j<b.len;i++,j++) 31 { 32 if(a[i]!=b.s[j]) 33 { 34 j--; 35 } 36 else xiangdeng++; 37 } 38 if(xiangdeng==b.len)return 1; 39 } 40 else if(lena+1==b.len)//可插入 41 { 42 int xiangdeng=0; 43 for(i=0,j=0;i<lena&&j<b.len;i++,j++) 44 { 45 if(a[i]!=b.s[j]) 46 { 47 i--; 48 } 49 else xiangdeng++; 50 } 51 if(xiangdeng==lena)return 1; 52 } 53 return 0; 54 } 55 bool flag;//是否有 56 int main() 57 { 58 int i=0; 59 for(;;i++) 60 { 61 cin>>word[i].s; 62 word[i].len=strlen(word[i].s); 63 if(word[i].s[0]==‘#‘) 64 break; 65 } 66 int n=i; 67 //读入字典 68 char a[20]; 69 while(cin>>a) 70 { 71 if(a[0]==‘#‘)break; 72 int j=0;//记录里的序号 73 flag=false; 74 int lena=strlen(a); 75 for(i=0;i<n;i++) 76 { 77 int t=check(a,lena,word[i]); 78 if(t==2) 79 { 80 flag=true; 81 break; 82 } 83 else if(t==1) 84 { 85 jilu[j]=i; 86 j++; 87 } 88 } 89 if(flag)cout<<a<<" is correct"<<endl; 90 else 91 { 92 cout<<a<<":"; 93 for(i=0;i<j;i++) 94 { 95 cout<<" "<<word[jilu[i]].s; 96 } 97 cout<<endl; 98 } 99 } 100 return 0; 101 }
标签:
原文地址:http://www.cnblogs.com/Annetree/p/5674657.html