Pagini recente » Cod sursa (job #2828370) | Cod sursa (job #3287713) | Cod sursa (job #1156061) | Cod sursa (job #2329499) | Cod sursa (job #503132)
Cod sursa(job #503132)
#include <iostream.h>
#include <fstream.h>
int d[100], c[100][100], n, op[100], cl[100];
ifstream f ("podm.in");
ofstream g("podm.out");
void citire ()
{
int i;
f>>n;
for (i=0;i<=n;i++) f>>d[i];
f.close();
}
int min (int a, int b) {
return (a<b)?a:b;
}
void matrice () {
int i,p,aux,k,j,t,t1;
for (i=1;i<=n;i++) c[i][i]=0;
for (i=1;i<=n-1;i++) c[i][i+1]=d[i-1]*d[i]*d[i+1];
for (p=2;p<=n-1;p++)
for (i=1;i<=n-p;i++)
{
j=i+p;
c[i][j]=c[i][i]+c[i+1][j]+d[i-1]*d[i]*d[j];
c[j][i]=i;
for (k=i+1;k<=j-1;k++)
{
aux= c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
if (c[i][j]>aux) {
c[i][j]=aux;
c[j][i]=k;
}
}
}
g<<c[1][n];
}
int parantezare (int i, int j, int op[], int cl[])
{
if (j-i>1) {
int k=c[j][i];
if (i!=k) {
op[i]++; cl[k]++;
}
if (k+1!=j) {
op[k+1]++;
cl[j]++;
}
parantezare (i,k,op,cl);
parantezare (k+1,j,op,cl);
}
}
int main()
{
int i,j;
citire ();
matrice ();
parantezare (1,n,op,cl);
return 0;
}