6
tôi thấy chút mã này mà tính Levenshtein's distance giữa một câu trả lời và đoán:khoảng cách levenshtein C# count loại lỗi
int CheckErrors(string Answer, string Guess)
{
int[,] d = new int[Answer.Length + 1, Guess.Length + 1];
for (int i = 0; i <= Answer.Length; i++)
d[i, 0] = i;
for (int j = 0; j <= Guess.Length; j++)
d[0, j] = j;
for (int j = 1; j <= Guess.Length; j++)
for (int i = 1; i <= Answer.Length; i++)
if (Answer[i - 1] == Guess[j - 1])
d[i, j] = d[i - 1, j - 1]; //no operation
else
d[i, j] = Math.Min(Math.Min(
d[i - 1, j] + 1, //a deletion
d[i, j - 1] + 1), //an insertion
d[i - 1, j - 1] + 1 //a substitution
);
return d[Answer.Length, Guess.Length];
}
Nhưng tôi cần một cách để làm một số cho số lần mỗi lỗi xảy ra. Có cách nào dễ dàng để thực hiện điều đó không?
Tôi đã thử điều này với một ví dụ về "hello" và "hello" và nó cho biết thêm lên trên xóa và chèn khi nó là chính xác. Đây là loại điều tôi cần chỉ không chắc chắn bit này là chính xác làm việc! – user1988332
Xóa và chèn cả hai nhổ ra số 9 khi "hello" là chính xác? – user1988332
Vấn đề cơ bản là tôi hiểu lầm những gì đang xảy ra. Trong mã, bạn chỉ muốn tăng số lần xóa, chèn, v.v. khi 'i == j'. Ít nhất, tôi nghĩ đó là vấn đề. Bạn có thể phải thử nghiệm nó. Tôi đã thực hiện thay đổi đối với mã của mình. –