Ocaml中最长递增子阵列
我正试图为下一个问题找到一个解决方案:在OCaml中编写一个函数,该函数的第一个和最后一个索引是最长的递增子数组,作为输出。我正在努力修复错误。 到目前为止,我写了以下内容: 例如:Ocaml中最长递增子阵列,ocaml,Ocaml,我正试图为下一个问题找到一个解决方案:在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 =
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;;
您的代码和方法存在一些问题,让我在问答表中强调一下: 如何为引用赋值 正确:
x := v
x := v;
y := p
if p1.(i - 1) < p1.(i)
then update_indices i;
else reset_indices ();
错:
如何连续做两个作业
正确:
x := v
x := v;
y := p
if p1.(i - 1) < p1.(i)
then update_indices i;
else reset_indices ();
错:
如何根据条件进行分支
正确:
x := v
x := v;
y := p
if p1.(i - 1) < p1.(i)
then update_indices i;
else reset_indices ();
错误:对循环、引用等使用命令行
我想你忘了问这个问题:比如你是在试图解决代码中的类型错误,还是在问应该采取什么方法?请编辑您的帖子,并添加一个明确的问题,否则,它将被关闭,因为太广泛了。以下是一些。