Pagini recente » Cod sursa (job #1788237) | Cod sursa (job #1207785) | Cod sursa (job #2185795) | Cod sursa (job #2907094) | Cod sursa (job #2058775)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int c[100][100],n,i,j,k,l,d[100],mmin,val,s[100][100],kmin;
void optim()
{
int cost;
for(i=1;i<=n;i++)
c[i][i]=0;
for(l=2;l<=n;l++)
for(i=1;i<=n-l+1;i++)
{
j=i+l-1;
mmin=1000000000;
kmin=-1;
for(k=i;k<=j-1;k++)
{
cost=c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
if(cost<mmin)
{
mmin=cost;
kmin=k;
}
}
c[i][j]=mmin;
c[j][i]=kmin;
}
/*for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
fout<<c[i][j]<<" ";
fout<<endl;
}*/
fout<<c[1][n]<<endl;
}
void afis(int i,int j)
{
if(i==c[j][i])
fout<<"A"<<i;
else
{
fout<<"(";
afis(i,c[j][i]);
fout<<")";
}
fout<<"*";
if(j==c[j][i]+1)
fout<<"A"<<j;
else
{
fout<<"(";
afis(c[j][i]+1,j);
fout<<")";
}
}
int main()
{
fin>>n;
for(i=0;i<=n;i++)
fin>>d[i];
optim();
//afis(1,n);
return 0;
}