Advertisement
dxvmxnd

Untitled

Mar 12th, 2024 (edited)
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. function FindReverseSubsequence(const sequence: array of Integer; startIndex, endIndex: Integer): TIndexPair;
  2. var
  3. i, j, maxI, maxJ: Integer;
  4. begin
  5. // Инициализация начальных значений
  6. maxI := startIndex;
  7. maxJ := startIndex;
  8.  
  9. // Проверка всех возможных комбинаций i и j
  10. for i := startIndex to endIndex do
  11. begin
  12. for j := i to endIndex do
  13. begin
  14. // Проверка, является ли подпоследовательность перевертышем
  15. if IsReverseSubsequence(sequence, i, j) then
  16. begin
  17. // Обновление значений i и j, если найдена более длинная подпоследовательность
  18. if (j - i) > (maxJ - maxI) then
  19. begin
  20. maxI := i;
  21. maxJ := j;
  22. end;
  23. end;
  24. end;
  25. end;
  26.  
  27. // Возвращаем найденную пару значений i и j
  28. Result.i := maxI;
  29. Result.j := maxJ;
  30. end;
  31.  
  32. function IsReverseSubsequence(const sequence: array of Integer; startIndex, endIndex: Integer): Boolean;
  33. var
  34. i, j: Integer;
  35. begin
  36. // Проверка, является ли подпоследовательность перевертышем
  37. i := startIndex;
  38. j := endIndex;
  39. while i < j do
  40. begin
  41. if sequence[i] <> sequence[j] then
  42. begin
  43. Result := False;
  44. Exit;
  45. end;
  46. Inc(i);
  47. Dec(j);
  48. end;
  49. Result := True;
  50. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement