您的位置:首页 > 其它

POJ 1035

2018-03-18 17:30 211 查看
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#include <set>

using namespace std;
vector<string> myvector;
vector<string> vector1;

bool del(string s1, string s2) {
// delete one char from s2 to turn to s1
if (s1.size() + 1 != s2.size())
return false;
int ix = 0;
bool isdel = false;
for (int i = 0; i < s1.size(); ++i) {
if (s2[ix] == s1[i])
ix++;
else {
if (isdel)
return false;
else {
isdel = true;
i--;
ix++;
}
}
}
return true;
}

bool ins(string s1, string s2) {
// insert a char to s2 so that s1==s2;
if (s1.size() != s2.size() + 1)
return false;
int ix = 0;
int isins = false;
for (int i = 0; i < s1.size(); ++i) {
if (s2[ix] == s1[i])
ix++;
else {
if (isins)
return false;
else
isins = true;
}
}
return true;
}

bool sub(string s1, string s2) {
if (s1.size() != s2.size())
return false;
int ix = 0;
bool issub = false;
for (int i = 0; i < s2.size(); ++i) {
if (s1[i] != s2[ix++]) {
if (issub)
return false;
else
issub = true;
}
}
return true;
}

vector<string> findsub(string s) {
vector1.clear();
// from myvector find the substitution of s;
for (int i = 0; i < myvector.size(); ++i) {
int gap = static_cast<int>(myvector[i].size() - s.size());
if (gap == 1){
if (ins(myvector[i], s))
vector1.push_back(myvector[i]);
} else if (gap == 0){
if (sub(myvector[i], s))
vector1.push_back(myvector[i]);
} else if (gap == -1){
if (del(myvector[i], s))
vector1.push_back(myvector[i]);
}
}
return vector1;
}

int main() {
//    freopen("../in.txt", "r", stdin);
string temp;
vector<string>::iterator it;
vector<string> resvector;
while (cin >> temp && temp.compare("#")) {
myvector.push_back(temp);
}
while (cin >> temp && temp.compare("#")) {
if (find(myvector.begin(), myvector.end(), temp) != myvector.end()) {
cout << temp << " " << "is correct" << endl;
} else {
cout << temp << ":";
resvector = findsub(temp);
it = resvector.begin();
for(; it != resvector.end(); it++){
cout<<" "<<*it;
}
cout<<endl;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: