Pagini recente » Cod sursa (job #1248883) | Cod sursa (job #1718706) | Cod sursa (job #866447) | Cod sursa (job #1550874) | Cod sursa (job #2052168)
#include <bits/stdc++.h>
#define MININF 2000000000
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
int n,d[105],c[101][101];
void dinamica()
{
int i,j,k,minn,kmin,p;
for(i=1;i<=n;i++)
c[i][i]=0;
for(p=1;p<=n-1;p++)
for(i=1;i<=n-p;i++)
{
j=i+p;
minn=MININF;
kmin=-1;
for(k=i;k<=j-1;k++)
if(minn>c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j])
{
minn=c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
kmin=k;
}
c[i][j]=minn;
c[j][i]=kmin;
}
/**
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
g<<c[i][j]<<" ";
g<<'\n';
}**/
g<<c[1][n]<<'\n';
}
void afis(int i,int j)
{
if(i==c[j][i])
g<<"A"<<i;
else
{
g<<"(";
afis(i,c[j][i]);
g<<")";
}
g<<"*";
if(j==c[j][i]+1)
g<<"A"<<j;
else
{
g<<"(";
afis(c[j][i]+1,j);
g<<")";}
}
int main()
{
f>>n;
for(int i=0;i<=n;i++)
f>>d[i];
dinamica();
///afis(1,n);
return 0;
}