我有两个字符串 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_len
is ( s1_len(s1)
s2 相同) 和s1_match
is int *s1_matches = (int*) calloc(s1_len, sizeof(int))
。我正在运行c
带有正确答案的代码,但是当我将代码c++
更改为并将字符串变量更改为向量变量时,我得到的数字transposition
是不同的。要将字符串更改为向量,我得到向量 ( v1_len
) byv1.size()
和v1_match
by的大小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++;
}
这里有什么问题?