Với câu dưới đây,Tìm dài nhất không giảm chuỗi
Với một loạt các số nguyên A có độ dài n, tìm chuỗi dài nhất {i_1, ..., i_k} mà i_j < i_ (j + 1) và A [i_j] < = A [i_ (j + 1)] cho bất kỳ j nào trong [1, k-1].
Đây là giải pháp của tôi, điều này có đúng không?
max_start = 0; // store the final result
max_end = 0;
try_start = 0; // store the initial result
try_end = 0;
FOR i=0; i<(A.length-1); i++ DO
if A[i] <= A[i+1]
try_end = i+1; // satisfy the condition so move the ending point
else // now the condition is broken
if (try_end - try_start) > (max_end - max_start) // keep it if it is the maximum
max_end = try_end;
max_start = try_start;
endif
try_start = i+1; // reset the search
try_end = i+1;
endif
ENDFOR
// Checking the boundary conditions based on comments by Jason
if (try_end - try_start) > (max_end - max_start)
max_end = try_end;
max_start = try_start;
endif
Bằng cách nào đó, tôi không nghĩ đây là giải pháp đúng nhưng tôi không thể tìm thấy ví dụ phản đối giải pháp này.
mọi người đều có thể trợ giúp?
Cảm ơn bạn
Có vẻ khá tốt với tôi. Bạn có thể cho biết một số lý do tại sao bạn nghĩ rằng nó không chính xác? –