Cod sursa(job #813258)

Utilizator teonasipoteanuTeona Sipoteanu teonasipoteanu Data 15 noiembrie 2012 08:20:21
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

long long n, d[510], cmin[510][510];

void citire();
void pd();
void afisare();

int main()
{
	citire();
	pd();
	afisare();
	fout.close();
	return 0;
}

void citire()
{
    int i;
	fin>>n; //citim nr de matrici inmultite
	for(i=1;i<=n+1;i++) //citimcele n+1 dimensiuni
		fin>>d[i];
}

void pd()
{
	int i, j, k, lg, p;
	//initializam
	cmin[i][i]=0;
    cmin[i][i+1]=d[i]*d[i-1]*d[i+1];

	for(lg=3;lg<=n;lg++) // lungimea secventei
		for(i=1;i+lg-1<=n;i++) // inceputul secventei
		{
			j=i+lg-1; // sfarsitul secventei
            cmin[i][j]=1000000000;
            for(k=i;k<j;k++)
            {
                p= cmin[i][k] + cmin[k+1][j] + d[i-1]*d[k]*d[j];
                if(p<cmin[i][j])
                {
                    cmin[i][j]=p;
                    cmin[j][i]=k;
                }
            }
		}
}

void afisare()
{
	fout<<cmin[1][n];
	fout<<'\n';
	//afisare_rec(1,n);
}