Cod sursa(job #589170)

Utilizator bucketdeathcube k. bucket Data 11 mai 2011 12:47:03
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;

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

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

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

int main()
{
	fin >> n;
	for(i = 1; i <= n; i ++)
		fin >> linie[i] >> coloana[i];
	
	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";
	for(i = 1; i <= n; i ++)
	{
		for(j = 1; j <= n; j ++)
			cout << opt[i][j] << " ";
		cout << "\n";
	}
	return 0;
}