Pagini recente » Cod sursa (job #1090879) | Cod sursa (job #2254472) | Cod sursa (job #2328024) | Cod sursa (job #2168205) | Cod sursa (job #502898)
Cod sursa(job #502898)
//programare dinamica - parantezarea optima a unui sir de matrici
#include <stdio.h>
#define nmax 505
#define inf 100000000000000LL
using namespace std;
int n,p[nmax];
long long m[nmax][nmax];
void read(void)
{ FILE *fin=fopen("podm.in","r");
int i;
fscanf(fin,"%d",&n);
for(i=0;i<=n;i++) fscanf(fin,"%d",p+i);
fclose(fin);
}
void inm(void)
{ int i,j,l,k;
long long q;
for(l=2;l<n;l++)
{ for(i=1;i<=n-l;i++)
{ j=i+l;
m[i][j]=inf;
for(k=i;k<j;k++)
{ q=m[i][k]+m[k+1][j]+(long long)p[i]*p[k]*p[j];
if(q<m[i][j]) m[i][j]=q;
}
}
}
}
void write(void)
{ FILE *fout=fopen("podm.out","w");
fprintf(fout,"%lld",m[1][n]);
fclose(fout);
}
int main(void)
{ read(); inm(); write();
return 0;
}