Cod sursa(job #866399)

Utilizator sinaelglHau C sinaelgl Data 27 ianuarie 2013 23:11:45
Problema Parantezare optima de matrici Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>

int v[501];
int v_length;

int table[501][501];

void solve(int i, int j)
{
	int k;
	int min = -1000;
	if ( i == j) {
		table[i][j] = 0;
		return;
	}

	for(k = i; k < j; k++) {
		int mul_num = table[i][k] + v[i-1]*v[k]*v[j] + table[k+1][j];
		if ( min == -1000 || mul_num < min)
			min = mul_num;
	}

	table[i][j] = min;
}

int main()
{
	FILE *fin = fopen("podm.in", "r");
	FILE *fout = fopen("podm.out", "w");
	int i;
	fscanf(fin, "%d", &v_length);
	for (i = 0; i <= v_length ; i++) {
		fscanf(fin, "%d", &v[i]);
	}

	int distance;
	for(distance = 1; distance < v_length; distance++)
		for(i = 1; i+distance <= v_length; i++)
			solve(i, i+distance);

	fprintf(fout, "%d\n", table[1][v_length]);
/*
	int j;
	for( i = 0 ; i <= v_length; i++,printf("\n"))
	for( j = 0; j <= v_length; j++)
		printf("%d\t", table[i][j]);
*/
	fclose(fin);
	fclose(fout);
	return 0;
}