Pagini recente » Cod sursa (job #1165100) | Cod sursa (job #2324760) | Cod sursa (job #656301) | Cod sursa (job #756203) | Cod sursa (job #823895)
Cod sursa(job #823895)
#include <cstdio>
using namespace std;
int inm[501][501];
short int d[501];
inline int _min(int a,int b)
{
if(a<b)
return a;
return b;
}
int best(int a,int b)
{
if(inm[a][b] || a== b)
return inm[a][b];
int minsofar = 1 << 30;
int k;
for(k=a;k<b;++k)
minsofar = _min(minsofar,best(a,k) + best(k+1,b) + d[a-1] * d[k] * d[b]);
return (inm[a][b] = minsofar);
}
int main()
{
int i,n;
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
for(i=0;i<=n;++i)
{
scanf("%d",&d[i]);
inm[i][i] = 0;
}
inm[i][i] = 0;
printf("%d\n",best(1,n));
return 0;
}