Cod sursa(job #447503)

Utilizator DuxarFII-Stefan-Negrus Duxar Data 28 aprilie 2010 21:52:41
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>

using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

struct matrix
{
	int lin,col;
} M[512];

int n;
int a[512][512];

void read();
void podm();
void write();
void initializare();

int main()
{
	read();
	initializare();
	podm();
	write();
	f.close();
	g.close();
	return 0;
}

void read()
{
	int i,x,y;
	f>>n;
	f>>x;
	for (i=1;i<=n;++i)
	{
		f>>y;
		M[i].lin=x;
		M[i].col=y;
		x=y;
	}
}

void initializare()
{
	int i;
	for (i=1;i<n;++i)
		a[i][i+1]=M[i].lin*M[i].col*M[i+1].col;
}

void podm()
{
	int i,j,k,d,min,s;
	for (d=3;d<=n;++d)
		for (i=1,j=d;j<=n;++i,++j)
		{
			min=9999999;
			for (k=i;k<j;++k)
			{
				s=a[i][k]+a[k+1][j]+M[i].lin*M[k+1].lin*M[j].col;
				if (s<min) min=s;
			}
		a[i][j]=min;
		}
}

void write()
{
	g<<a[1][n]<<'\n';
}