[c++]代码库
const vector<string> lcs_vt(const string &str1, const string &str2)
{
int col_num = str1.length();
int row_num = str2.length();
int map[row_num][col_num];
bzero(map, sizeof(map));
vector<string> ret;
for(int i = 0; i < col_num; i++) {
for(int j = 0; j < row_num; j++) {
if (str1[i] == str2[j]) {
map[j][i] = 1;
}
}
}
int list_flag = 0;
string temp;
for (int i = col_num - 1; i >= 0; i--) {
int j = 0;
temp = "";
while(j + i < col_num && j < row_num) {
if (map[j][j + i] == 1) {
temp += str1[j + i];
} else {
temp += '#';
}
j++;
}
vector<string> splited_str = split_with_string(temp, "#");
vector_unique(splited_str);
for(unsigned int i = 0; i < splited_str.size(); i++) {
ret.push_back(splited_str[i]);
}
}
for (int i = 1; i < row_num; i++) {
int j = 0;
temp = "";
while(j < col_num && j + i < row_num) {
if (map[j + i][j] == 1) {
temp += str2[j + i];
} else {
temp += '#';
}
j++;
}
//if (!(temp.empty())) {
// cout << "###" << temp << endl;
//}
vector<string> splited_str = split_with_string(temp, "#");
vector_unique(splited_str);
for(unsigned int i = 0; i < splited_str.size(); i++) {
ret.push_back(splited_str[i]);
}
}
return ret;
}