Pagini recente » Cod sursa (job #966370) | Cod sursa (job #1659353) | Cod sursa (job #2823462) | Cod sursa (job #3211274) | Cod sursa (job #471687)
Cod sursa(job #471687)
#include <string.h>
#include <stdio.h>
#define N 505
typedef long long int i64;
i64 d[N];
i64 mat[N][N];
int main ()
{freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
int n,i,j,k;
scanf("%d",&n);
for (i=1;i<=n+1;i++)
{scanf("%lld",&d[i]);
}
//mat[2-doua matrici][1-incepe cu prima matrice]
//matricea i are dimensiunea d[i] si d[i+1]
memset(mat,0x7f,sizeof(mat));
for (i=1;i<=n;i++)
{mat[1][i]=0;
}
for (i=1;i<n;i++)
{mat[2][i]=d[i]*d[i+1]*d[i+2];
}
for (i=3;i<=n;i++) //cate matrici
{for (j=1;j+i-1<=n;j++)//de unde incepe
{for (k=1;k<=i-1;k++)//taie dupa prima .. taie dupa i-1
{if(mat[k][j]+d[j]*d[j+k]*d[j+i]+mat[i-k][j+k]<mat[i][j])
{mat[i][j]=mat[k][j]+d[j]*d[j+k]*d[j+i]+mat[i-k][j+k];
}
}
}
}
printf("%lld",mat[n][1]);
return 0;
}