Pagini recente » Cod sursa (job #1459434) | Cod sursa (job #844291) | Cod sursa (job #2353757) | Cod sursa (job #1214121) | Cod sursa (job #1533325)
#include <stdio.h>
int v[501];
long long m[501][501];///m[i][j]=nr optim de a inmultiri pt matricele de la i la j
int main()
{
FILE *f;
int n,i,j,k;
f=fopen("podm.in","r");
fscanf(f,"%d",&n);
for (i=1; i<=n+1; i++)
fscanf(f,"%d",&v[i]);
fclose(f);
///costul de a inmulti o singura matrice este 0
for (i=1; i<n; i++)
m[i][i+1]=v[i]*v[i+1]*v[i+2];///initializez costurile pt cuplajele de cate 2
for (j=2; j<=n; j++)
{
for (i=1; i<=n-j+1; i++)
{
m[i][i+j]=1000000000000000LL;
for (k=i; k<=i+j; k++)
if (m[i][k]+m[k+1][j+i]+v[i]*v[k+1]*v[j+i+1] < m[i][i+j])
m[i][i+j]=m[i][k]+m[k+1][j+i]+v[i]*v[k+1]*v[i+j+1];
}
}
f=fopen("podm.out","w");
fprintf(f,"%I64d",m[1][n]);
fclose(f);
}