【发布时间】:2020-06-21 05:28:04
【问题描述】:
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using std::string;
int edit_distance(const string &str1, const string &str2) {
std::vector<std::vector<int>> strMat(str1.length()+1,std::vector<int>(str2.length(),0));
for(int i=0;i<=str1.length();i++){
strMat[i][0] = i;
}
for(int j=0;j<=str2.length();j++){
strMat[0][j] = j;
}
for(int i=1;i<=str1.length();i++){
for(int j=1;j<=str2.length();j++){
int min1 = std::min(strMat[i][j-1]+1,strMat[i-1][j]+1);
int min2;
if(str1[i-1]==str2[j-1]){
min2 = std::min(min1,strMat[i-1][j-1]);
}
else if(str1[i-1]!=str2[j-1]){
min2 = std::min(min1,strMat[i-1][j-1]+1);
}
strMat[i][j] = min2;
}
}
int ans = strMat[str1.length()][str2.length()];
return ans;
}
int main() {
string str1;
string str2;
std::cin >> str1 >> str2;
std::cout << edit_distance(str1, str2) << std::endl;
return 0;
}
我收到错误:“***** `./a.out' 中的错误:free(): invalid next size (fast): 0x00000000010e8d70 *** Aborted (core dumped)**” 随机随机输入。 很多时候它适用于相同的输入,有时它会失败并给出错误。
它在不引发错误的情况下给出正确的输出。
【问题讨论】:
标签: c++ dynamic-programming coredump edit-distance