Bài này tư tưởng rất đơn giản, nó là phần hợp của thuật toán Merge sort.
Merge sort là thuật toán sắp xếp dựa trên tư tưởng chia để trị. Một thuật toán chia để trị thường gồm 3 phần: phần chia, phần...
Type: Posts; User: technolt; Keyword(s):
Bài này tư tưởng rất đơn giản, nó là phần hợp của thuật toán Merge sort.
Merge sort là thuật toán sắp xếp dựa trên tư tưởng chia để trị. Một thuật toán chia để trị thường gồm 3 phần: phần chia, phần...
@Đại: anh cũng chưa đọc đề nhưng nhìn qua qua thì thấy là: ai lại viết hàm gcd như thế em :P Em nên viết như thế này:
function gcd(x,y:longint):longint;
begin
if y=0 then exit(x)
else...
@cris: Đến giờ thì mình chỉ code khi biết chắc chắn thuật toán của mình là đúng.
Nó có thể ko phải cách giải với độ phức tạp tối ưu nhưng nó phải đúng.
Còn mình chả hình dung ra bạn làm kiểu j` mà...
Cái j` mà "hình như" với lại "chỉ cần" ở đây?
Trước khi comment bạn nên biết suy nghĩ chứ!
Nếu ko làm đc thì ko cần tỏ ra mình làm đc bạn ạ!
Đại khái như sau
Duyệt giữa
procedure attemp(u:node);
begin
attemp(u.left);
//Process u node
attemp(u.right);
Đơn giản 100 là giới hạn của mảng đó :-??
Bạn cần dùng bao nhiêu số thì khai báo bấy nhiêu
Bạn thử đề trình dẫn biên dịch {$R+,Q+} rồi cho giới hạn =2 và nhập n=3 xem nó bị sao :@)
@thử thì biết: N 1000 tỉ
@ở đâu ra thế: cái này tự nghĩ ra bạn ạ
Sửa đoạn khởi tạo Compute Prefix Function như sau
if p[k+1] = p[i] then
k := k + 1;
kmp[i]:=k;
Sách giải thuật và lập trình của thầy Hoàng như là SGK rồi :))
Các bạn cứ tìm đọc rồi luyện mấy bài cơ bản rồi dần dần hiểu thôi :))
Hình như các phép div, mod trên ý nghĩa toán học chỉ xét cho số dương :-?