Cod sursa(job #787328)

Utilizator ephgstefana gal ephg Data 13 septembrie 2012 10:42:40
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <cstdio>
#define mare 5000005
#include <algorithm>
using namespace std;
#define BM 505
int m[BM][BM],n,s[BM];
int memo(int i,int j){
	if(m[i][j]==0){
		if(i==j-2)return s[i]*s[j]*s[i+1];
		if(i>=j-1)return 0;
		m[i][j]=mare;
		for(int k=i+1;k<j;++k){
			m[i][j]=min(m[i][j],memo(i,k)+memo(k,j)+(s[i]*s[j]*s[k]));
		}
	}
	return m[i][j];
}

int main () {
	int i;
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n+1;++i)scanf("%d",&s[i]);
	printf("%d",memo(1,n+1));
}