Cod sursa(job #818985)

Utilizator cristina_hoameaCristina cristina_hoamea Data 18 noiembrie 2012 13:41:20
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#define minim(a,b) ((a) < (b) ? a:b)
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");

long long cmin[505][505], d[505], n;
void citire();
void pd();

int main()
{
	citire();
	pd();
	fout <<cmin[1][n];
	fout.close();
	return 0;
}

void citire()
{
	int i;
	fin>>n;
	for(i=0; i<=n; i++) fin>>d[i];
}

void pd()
{
	long long i, j, k, nrm;
	//initializare
	for(i=1; i<=n; i++) cmin[i][i]=0;
	for(i=1; i<=n-1; i++) cmin[i][i+1]=d[i-1]*d[i]*d[i+1];
	//rezolvare propriu-zisa
	for(nrm=2; nrm<=n-1; nrm++)//lg secventei
		for(i=1; i<=n-nrm; i++)//inceputul secv
		{
			j=i+nrm-1;//sf secv
			cmin[i][j]=10000000;
			for(k=i; k<=j-1; k++)
			{
				cmin[i][j]=minim(cmin[i][j], cmin[i][k]+cmin[k+1][j]+d[i-1]*d[k]*d[j]);
				cmin[j][i]=k;
			}
		}
}