Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function FindReverseSubsequence(const sequence: array of Integer; startIndex, endIndex: Integer): TIndexPair;
- var
- i, j, maxI, maxJ: Integer;
- begin
- // Инициализация начальных значений
- maxI := startIndex;
- maxJ := startIndex;
- // Проверка всех возможных комбинаций i и j
- for i := startIndex to endIndex do
- begin
- for j := i to endIndex do
- begin
- // Проверка, является ли подпоследовательность перевертышем
- if IsReverseSubsequence(sequence, i, j) then
- begin
- // Обновление значений i и j, если найдена более длинная подпоследовательность
- if (j - i) > (maxJ - maxI) then
- begin
- maxI := i;
- maxJ := j;
- end;
- end;
- end;
- end;
- // Возвращаем найденную пару значений i и j
- Result.i := maxI;
- Result.j := maxJ;
- end;
- function IsReverseSubsequence(const sequence: array of Integer; startIndex, endIndex: Integer): Boolean;
- var
- i, j: Integer;
- begin
- // Проверка, является ли подпоследовательность перевертышем
- i := startIndex;
- j := endIndex;
- while i < j do
- begin
- if sequence[i] <> sequence[j] then
- begin
- Result := False;
- Exit;
- end;
- Inc(i);
- Dec(j);
- end;
- Result := True;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement