Pagini recente » Cod sursa (job #1553872) | Cod sursa (job #2790345) | Cod sursa (job #869531) | Cod sursa (job #241382) | Cod sursa (job #532656)
Cod sursa(job #532656)
#include <iostream>
using namespace std;
int n, d[100],m[100][100];
void afisare(int i, int j){
if(i==j){
printf("A%d",i);
return;
}
else{
printf("(");
afisare(i,m[j][i]);
printf("*");
afisare(m[j][i]+1,j);
printf(")");
}
}
int minim(int i, int j){
int p=0,l,k1;
for(int k=i;k<j;k++){
l=m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j];
if(l<p || p==0){
p=l;
k1=k;
}
}
m[j][i]=k1;
return p;
}
void filler(){
for(int j=1;j<n;j++)
for(int i=1;i<=n;i++)
m[i][i+j]=minim(i,i+j);
}
void read(){
scanf("%d\n",&n);
for(int i=0;i<=n;i++)
scanf("%d ",&d[i]);
}
int main(){
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
read();
filler();
printf("%d",m[1][n]);
// afisare(1, n);
return 0;
}