2 つの文字列 s1:"abcd"
と s2:"ab"
と 2 つの int ベクトル v1:12,13,14,15
と v2: があり12,13
ます。2 つの文字列と 2 つのベクトルの間の距離を計算しています。c
2 つの文字列間の距離を計算するファイルのコードを Web から入手しました。2 つのベクトル間の距離を計算する方法でコードを変更していますが、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++;
}
は(s2 も同じ) とs1_len
はです。正解でコードを実行していますが、コードを変更して文字列変数をベクトル変数に変更すると、得られる数が異なります。文字列をベクターに変更するには、ベクターのサイズ ( )とbyを取得します。コードはまったく同じです。s1_len(s1)
s1_match
int *s1_matches = (int*) calloc(s1_len, sizeof(int))
c
c++
transposition
v1_len
v1.size()
v1_match
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++;
}
ここで何が問題なのですか?