2

2 つの文字列 s1:"abcd"と s2:"ab"と 2 つの int ベクトル v1:12,13,14,15と v2: があり12,13ます。2 つの文字列と 2 つのベクトルの間の距離を計算しています。c2 つの文字列間の距離を計算するファイルのコードを 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_matchint *s1_matches = (int*) calloc(s1_len, sizeof(int))cc++transpositionv1_lenv1.size()v1_matchint *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++;
}

ここで何が問題なのですか?

4

1 に答える 1