let d = fun x y i j -> if x.(i-1)=y.(j-1) then 1 else 0;;
let subseq length = fun x y ->
let m = vect length x and n = vect length y in
let l = make matrix (m+1) (n+1) 0 in
for i = 1 to m do
for j = 1 to n do
l.(i).(j) <- max
(l.(i-1).(j-1) + (d x y i j))
(max l.(i).(j-1) l.(i-1).(j))
done
done;
l.(m).(n);;
let t1 = [|�a�;�b�;�c�|];;
let t2 = [|�c�;�b�;�c�|];;
subseq length t1 t2;;
*****************************************
let min fun = fun f i1 i2 ->
let i = ref i1 in let res = ref (f !i) in
for j = i1 to i1 do
if !res > (f j) then (res := f j; i := j; );
done;
!i;;
************************
t optprod = fun d ->
let n = vect length d - 1 in
let rec p = fun i j ->
let f = fun k ->
(p i k ) + (p (k+1) j) + d.(i)*d.(k+1)*d.(j+1) in
if i = j then 0
else f (min fun f i (j-1))
in p 0 (n-1)
*******************************
let optprod dyn = fun d ->
let n = vect length d - 1 in
let p = make matrix n n 0 in
for l = 1 to (n-1) do
for i = 0 to (n-l-1) do
let j = l + i in
let f = fun k -> p.(i).(k)+p.(k+1).(j)+d.(i)*d.(k+1)*d.(j+1) in
let k = min fun f i (j-1) in
p.(i).(j) <- f k
done
done;
p.(0).(n-1);;
********************************************
let optprod tree d =
let n = vect length d - 1 in
let p = make matrix n n 0 in
let s = make matrix n n (-1) in
for l = 1 to n - 1 do
for i = 0 to n - l - 1 do
let j = l + i in
let f k = p.(i).(k) + p.(k+1).(j) + d.(i) * d.(k+1) * d.(j+1) in
let k = min fun f i (j-1) in
p.(i).(j) <- f k;
s.(i).(j) <- k
done
done;
let rec aux i j =
if i = j then (Matrix i)
else Product (aux i s.(i).(j), aux (s.(i).(j) + 1) j)
in
aux 0 (n-1)
;;
******************************************
P'tit café et chocolat en prime ? Et un chèque (en euros) avec plus de 3 zéros avant la virgule ?
- Edité par edgarjacobs 22 décembre 2018 à 21:08:02
*
Avec 7 zéros si tu veux!?
Traduction du Caml au C
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent