Edit: Mình đã hiểu ra vấn đề… thực ra khá dễ hiểu chắc tại hôm nay đầu óc không được minh mẫn
Mình đang học mấy thuật toán trong sách Tài liệu chuyên tin 1 của Lê Minh Hoàng , và học đến phần qhđ thì có bài ví dụ tìm dãy con đơn điệu tăng dài nhất nhưng có một chỗ mình đọc mãi không hiểu nhưng gõ code chạy trên máy thì ra kq đúng
a[0]:= low(longint);
a[n+1]:= high(longint);
L[n+1]:= 1;
for i:= n downto 0 do begin
jmax:= n+1;
for j:= i+1 to n+1 do
if (a[j]>a[i]) and (L[j] > L[jmax]) then jmax:= j;
l[i]:= l[jmax] + 1;
trace[i]:= jmax;
end;
end;
writeln(l[0]-2);
end
Đây ở chỗ này
if (a[j]>a[i]) and (L[j] > L[jmax]) then jmax:=j;
theo mình nghĩ thì lúc khai báo mảng trong pascal các giá trị trong mảng đều mang gt = 0
, vậy làm sao mà điều kiện L[j] > L[jmax]
lại thỏa mãn được.
các bạn giải thích giùm mình với , thắc mắc cả ngày hôm nay rồi