39 lines
601 B
Text
39 lines
601 B
Text
mata
|
|
function aux(u,i,j) {
|
|
k = u[i,j]
|
|
if (k<0) {
|
|
printf("%f",i)
|
|
} else {
|
|
printf("(")
|
|
aux(u,i,k)
|
|
printf("*")
|
|
aux(u,i+k,j-k)
|
|
printf(")")
|
|
}
|
|
}
|
|
|
|
function optim(a) {
|
|
n = length(a)-1
|
|
u = J(n,n,.)
|
|
v = J(n,n,.)
|
|
u[.,1] = J(n,1,-1)
|
|
v[.,1] = J(n,1,0)
|
|
for (j=2; j<=n; j++) {
|
|
for (i=1; i<=n-j+1; i++) {
|
|
for (k=1; k<j; k++) {
|
|
c = v[i,k]+v[i+k,j-k]+a[i]*a[i+k]*a[i+j]
|
|
if (c<v[i,j]) {
|
|
u[i,j] = k
|
|
v[i,j] = c
|
|
}
|
|
}
|
|
}
|
|
}
|
|
printf("%f ",v[1,n])
|
|
aux(u,1,n)
|
|
printf("\n")
|
|
}
|
|
|
|
optim((1,5,25,30,100,70,2,1,100,250,1,1000,2))
|
|
optim((1000,1,500,12,1,700,2500,3,2,5,14,10))
|
|
end
|