Cod sursa(job #813261)

Utilizator ioanaaa_cCiurea Ioana ioanaaa_c Data 15 noiembrie 2012 08:25:52
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 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();
void afisare();
void rec(int i, int j);

int main()
{
	citire();
	pd();
	afisare();
	return 0;
}

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

void pd()
{
	int i, j, k, lg;
	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];
	for(lg=2; lg<=n-1; lg++) //lungimea secventei
		for(i=1; i<=n-lg; i++) //inceputul secventei
		{
			j=i+lg;
			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]);
			}
		}
}

void afisare()
{
    fout <<cmin[1][n]<<'\n';
    fout.close();
}