30/09/2018, 16:06

Tìm giúp em lỗi sai trong thuật toán Boyer - Moore

(Do diễn đàn chưa có mục dành cho CTDL và giải thuật nên em xin post tạm ở mục CPP này ạ)

Sau mấy ngày tham khảo thuật toán Boyer - Moore ở link này: http://www.iti.fh-flensburg.de/lang/algorithmen/pattern/bmen.htm

Em cũng hiểu chút ít và thử code ra như sau: http://ideone.com/4EHuRB

Nhưng sao output nó lại không ra cái gì cả!
Nhờ anh Đạt và mọi người xem giúp em ạ! Em mất mấy ngày nay rồi

viết 18:09 ngày 30/09/2018

À xin lỗi mọi người, do em lú quá. Chổ sai đây ạ:

while(i <= m-n) // phải thay điều kiện là i <= n-m mới đúng. n > m mà :D
{

    j = m-1;
    while(j >= 0 && pat[j] == text[i+j])
        j--;

    if(j < 0)
    {

        cout << "Found pattern at index: " << i << endl;
        i += s[0];
    }
    else
        i += std::max(s[j+1], j - bc[text[i+j]]);
}
Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

Vì nhiều bài hoặc thuật toán đi vào chi tiết quá. Ví dụ như bài này, anh đã học quá lâu rồi nên cũng không nhớ gì về nó cả. Hi vọng những câu hỏi sau của em anh có thể giải thích được

Bài liên quan
0