Cod sursa(job #590278)

Utilizator bucketdeathcube k. bucket Data 16 mai 2011 12:19:16
Problema Parantezare optima de matrici Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>

using namespace std;

const char iname[] = "podm.in";
const char oname[] = "podm.out";

ifstream fin(iname);
ofstream fout(oname);

int i, n, linie[100], coloana[100];
int opt[100][100], j, k, infor[100];

int main()
{
	fin >> n;
	for(i = 1; i <= n + 1; i ++)
		fin >> infor[i];
	
	for(i = 1; i <= n; i ++)
	{
		linie[i] = infor[i];
		coloana[i] = infor[i + 1];
	}
	for(i = 1; i <= n; i ++)
		for(j = 1; j <= n; j ++)
			opt[i][j] = 28298982;
	for(i = 2; i <= n ;i ++)
		opt[i - 1][i] = linie[i - 1] * coloana[i - 1] * coloana[i];
	for(i = 1; i <= n; i ++)
		opt[i][i] = 0;
	for(i = 1; i <= n; i ++)
		for(j = i + 1; j <= n; j ++)
			for(k = i; k <= j - 1; k ++)
				opt[i][j] = min(opt[i][j], opt[i][k] + opt[k + 1][j] + linie[i] * coloana[k] * coloana[j]);
	fout << opt[1][n] << "\n";
	return 0;
}