Cod sursa(job #1035412)

Utilizator andr3yon3Ichim Andrei andr3yon3 Data 18 noiembrie 2013 15:49:28
Problema Parantezare optima de matrici Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;

int d[100], c[100][100], n;
ifstream f("podm.in");
ofstream g("podm.out");
void citire ()
{
	short i;
	f>>n;
	for (i=0;i<=n;i++) f>>d[i];
	f.close();
}
int min (int a, int b) {
	return (a<b)?a:b;
}
void matrice () {
	int i,p,aux,k,j;
	for (i=1;i<=n;i++) c[i][i]=0;
	for (i=1;i<=n-1;i++) c[i][i+1]=d[i-1]*d[i]*d[i+1];
	for (p=2;p<=n-1;p++)
		for (i=1;i<=n-p;i++)
		{
			j=i+p;
			c[i][j]=c[i][i]+c[i+1][j]+d[i-1]*d[i]*d[j];
			c[j][i]=i;
			for (k=i+1;k<=j-1;k++)
			{
				aux=c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
				if (c[i][j]>aux) {
					c[i][j]=aux;
					c[j][i]=k;
				}
			}

		}
	g<<c[1][n];
	g.close();
}
int main()
{
	citire ();
	matrice ();
	return 0;
}