Cod sursa(job #581710)

Utilizator bog29Antohi Bogdan bog29 Data 14 aprilie 2011 15:25:30
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream>
#define dmax 503
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");

long long n,x[dmax],mat[dmax][dmax];

long long mn(long long a, long long b)
{	
	if(a < b)
		return a;
	return b;
}	

int main()
{	
	int i,j,k,l;
	
	in>>n;
	
	for(i=0; i<=n; i++)
		in>>x[i];
	
	
	for(i=1; i<=n+1; i++)
		mat[i][i] = 0;
	
	for(l=2; l<=n; l++)
		for(i=1; i <= n-l+1; i++)
		{	j = i+l-1;
			mat[i][j] = -1;
			for(k = i; k < j ;k++)
				if(mat[i][k]+mat[k+1][j] + x[i-1]*x[k]*x[j] < mat[i][j] || mat[i][j] ==-1)
					mat[i][j] =  mat[i][k]+mat[k+1][j] + x[i-1]*x[k]*x[j];
		}	
	
	out<<mat[1][n];

	return 0;
}