2016-11-05 4 views
-1

편집 거리를 사용하면 아래 코드에서 이미 수행 한 두 문자열 사이의 편집 횟수를 알아야하지만 출력이 예상되는 2 차원 배열을 인쇄하고있는 부분이 있습니다. 같은 : 내가 맞다 경우 enter image description here편집 거리에 대해 혼란스러워합니다

int editdistance(char *s, int ls, char *t, int lt) 
{ 
    int a, b, c; 
    if (!ls) return lt; 

    if (!lt) return ls; 

    if (s[ls] == t[ls]) 
      return editdistance(s, ls - 1, t, lt - 1); 
    a = editdistance(s, ls - 1, t, lt - 1); 
    b = editdistance(s, ls,  t, lt - 1); 
    c = editdistance(s, ls - 1, t, lt ); 

    if (a > b) a = b; 
    if (a > c) a = c; 

    return a + 1; 
} 

int main() 
{ 
char s1[100]; 
char s2[100]; 
printf("first: \n"); 
scanf("%s",s1); 
printf("second: \n"); 
scanf("%s",s2); 

printf("edit distance: %d\n", editdistance(s1, strlen(s1), s2, strlen(s2))); 

    return 0; 
} 
+0

http://stackoverflow.com/questions/40413578/edit-distance-matrix? –

답변

0

, 당신은 Levenshtein distance 찾고 있습니다. 이것은 Dynamic programming에있는 알고리즘입니다.

+0

예. 무엇을 찾고 있어요 – TheOne817

+0

그래서 무엇이 문제입니까? C로 번역? (Wikipedia에 코드가 있으므로 간단하게 복사 할 수 있음) – yd1