Я пытаюсь найти решение для следующей проблемы: написать функцию в OCaml, у которой в качестве выходных данных указан первый и последний индексы самого длинного увеличивающегося подмассива.Я борюсь с исправлением ошибок.Пока я написал это:
Пример:
longest_increasing_subarray [|2;4;6;9;1;5;3;5;0;8;9;13;17|];;
- : (8,12)
Это мой код:
let longest_increasing_subarray p1 =
let n = Array.length p1
and beg = ref 0
and larg = ref(0,0) in
for i=0 to n-1 do begin
if i=0 then begin
end;
if p1.(i-1)<p1.(i) then
begin
if (snd !larg - fst !larg +1)<((i-1)-(!beg+1)) then
!larg = (!beg,i-1)
!beg = i end;
if (i=n-1) then
begin if (snd !larg-fst !larg +1)<((i)-(!beg)+1) then
!larg := (!beg,i)
end;
end;
done;
!larg;;