我有两个字符串 s1:"abcd"和 s2:"ab"以及两个 int 向量 v1:12,13,14,15和 v2: 12,13。我正在计算两个字符串和两个向量之间的距离。我从网上得到了一个c文件的代码来计算两个字符串之间的距离。我正在修改代码以计算两个向量之间的距离,但是在c++. 代码正在运行,但结果不一样(两次计算的距离应该相同)。问题来自:
double transpositions = 0.0;
for (i = 0; i < s1_len; i++) {
if (!s1_matches[i]) continue;
while (!s2_matches[k]) k++;
if (s1[i] == s2[k]) transpositions++;
k++;
}
s1_lenis ( s1_len(s1)s2 相同) 和s1_matchis int *s1_matches = (int*) calloc(s1_len, sizeof(int))。我正在运行c带有正确答案的代码,但是当我将代码c++更改为并将字符串变量更改为向量变量时,我得到的数字transposition是不同的。要将字符串更改为向量,我得到向量 ( v1_len) byv1.size()和v1_matchby的大小int *v1_matches = (int*) calloc(v1_len, sizeof(int))。代码完全相同:
double transpositions = 0.0;
for (i = 0; i < v1_len; i++) {
if (!v1_matches[i]) continue;
while (!v2_matches[k]) k++;
if (v1[i] == v2[k]) transpositions++;
k++;
}
这里有什么问题?