标签:ret size written evel define sam imm diff pos
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 25426 | Accepted: 9300 |
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
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<string> using namespace std; typedef long long LL; #define MAXN 10003 /* 给定词典中的单词,要求检查合法的单词 如果词典中单词与该单词长度相等检查能否替换 否则如果两个单词长度之差绝对值小于一 检查能否添加删除 */ vector<string> dict; bool f = false; bool Compare(string &s,string &l) { string::iterator p1 = s.begin(),p2 = l.begin(); int cnt = 0; while(p1!=s.end()) { if(*p1!=*p2) { p2++; cnt++; if(cnt>1) return false; } else { p1++; p2++; } } return true; } bool Replace(string &word,string &dict) { int l = word.size(); int cnt = 0; for(int i=0;i<l;i++) { if(word[i]!=dict[i]) cnt++; if(cnt>1) return false; } return true; } int main() { dict.resize(10001); int cnt = 0; while(cin>>dict[cnt++]) { if(dict[cnt-1][0]==‘#‘) { cnt--; break; } } string word; while(cin>>word) { vector<string> ans; if(word[0]==‘#‘) break; int l1 = word.size(); f = false; bool find = false; for(int i=0;i<cnt;i++) { int l2 = dict[i].size(); if(l1==l2) { if(word==dict[i]) { find = true; f = false; break; } if(Replace(word,dict[i])) { f = true; ans.push_back(dict[i]); } } else if(l1==l2+1) { if(Compare(dict[i],word)) { f = true; ans.push_back(dict[i]); } } else if(l2==l1+1) { if(Compare(word,dict[i])) { f = true; ans.push_back(dict[i]); } } } cout<<word; if(!f&&find) cout<<" is correct"; else { cout<<":"; for(int i=0;i<ans.size();i++) cout<<" "<<ans[i]; } cout<<endl; } }
标签:ret size written evel define sam imm diff pos
原文地址:http://www.cnblogs.com/joeylee97/p/6662093.html