Cod sursa(job #484434)

Utilizator claudiumihailClaudiu Mihail claudiumihail Data 14 septembrie 2010 15:19:13
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include<iostream>
using namespace std;

#define MAXN 501

int main()
{
	int n;
	unsigned int mat[MAXN][MAXN];
	fstream fin("podm.in", fstream::in);
	fstream fout("podm.out", fstream::out);
	
	fin>>n;
	for(int i=0; i<=n; ++i)
	{
		fin>>mat[0][i];
	}

	for(int L=2; L<=n; ++L)
	{
		for(int i=1; i<=n-L+1; ++i)
		{
			const int j=i+L-1;
			mat[i][j]=0xffffffff;
			for(int k=i; k<j; ++k)
			{
				//if(mat[j][k+1])
				unsigned int val=mat[i][k]+mat[k+1][j]+mat[0][i-1]*mat[0][k]*mat[0][j];
				if(mat[i][j]>val)
				{
					mat[i][j]=val;
				}
			}
		}
	}
	/*for(int i=1; i<=n; ++i)
	{
		for(int j=1; j<=n; ++j)
		{
			cout<<mat[i][j]<<" ";
		}
		cout<<endl;
	}*/
	cout<<mat[1][n]<<endl;
	
	fin.close();
	fout.close();
	return 0;
}