Cod sursa(job #660819)

Utilizator evodaniVasile Daniel evodani Data 13 ianuarie 2012 13:23:47
Problema Parantezare optima de matrici Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
long long n, i, j, nr, d[501], nrmin[501][501], inf=1, cost, k;
void afisare_optim() {
}
int main () { 
	fin>>n; 
	for (i=0; i<=n; i++)  fin>>d[i], inf*=d[i]; 
	for (i=1; i<n; i++) nrmin[i][i+1]=d[i-1]*d[i]*d[i+1];
	for (nr=3; nr<=n; nr++) 
		for (i=1; i<=n-nr+1; i++) {
			j=i+nr-1; 
			nrmin[i][j]=inf;
			for (k=i; k<j; k++)
				if (nrmin[i][j]>nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j]) {
					nrmin[i][j]=nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j];
					nrmin[j][i]=k;
				}
		}
	fout<<nrmin[1][n]<<'\n';
	afisare_optim ();
	fout.close();
	return 0;
}