Cod sursa(job #408760)

Utilizator mottyMatei-Dan Epure motty Data 3 martie 2010 10:53:30
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>

const int N=512,FNI=10000,INF=FNI*FNI;

int n,v[N],a[N][N];

void read()
{
	scanf("%d",&n);
	for( int i=1 ; i<=n+1 ; ++i )
		scanf("%d",&v[i]);
}

void solve()
{
	int i,j,d;
	for( d=1 ; d<n ; ++d )//d=diferenta j-i (o diag paralela cu cea princ are j-i=d constant)
		for( i=1 ; i+d<=n ; ++i )
		{
			j = i+d;
			a[i][j] = INF;
			for( int k=i ; k<j ; ++k )
				if( a[i][j]>a[i][k] + a[k+1][j] + v[i]*v[k+1]*v[j+1] )
					a[i][j]= a[i][k] + a[k+1][j] + v[i]*v[k+1]*v[j+1];
		}
	//scrie();
	printf("%d",a[1][n]);
}

int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	read();
	solve();
	return 0;
}