Cod sursa(job #709320)

Utilizator catalinb91Catalin Badea catalinb91 Data 7 martie 2012 23:13:42
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <vector>

#define MIN(a, b) ((a < b) ? a : b)

using namespace std;

int main()
{
	ifstream input_stream("podm.in");
	ofstream output_stream("podm.out");

	int n;
	input_stream >> n;

	vector<vector<int> > matrix(n, vector<int>(n));
	vector<int> dimensiune(n + 1);

	// citeste dimensiunile
	for (int i = 0; i < n + 1; i++)
		input_stream >> dimensiune[i];

	for (int i = 0; i < n - 1; i++)
		matrix[i][i + 1] = dimensiune[i] * dimensiune[i + 1] * dimensiune[i + 2];

	for (int l = 2; l < n; l++) {
		for (int i = 0; i < n - l; i++) {
			int j = i + l;
			matrix[i][j] = 0x7fffffff;	
			for (int k = i; k < j; k++) {
				matrix[i][j] = MIN(matrix[i][j], matrix[i][k] + matrix[k + 1][j] + dimensiune[i] * dimensiune[k + 1] * dimensiune[j + 1]); 	
			}				
		}
	}


	for (int j = 0; j < n; j++) {
		for (int i = 0; i < n; i++) {
			cout.width(10);
			cout << matrix[j][i] << " ";
		}
		cout << "\n";
	}	

	return 0;	
}