Pagini recente » Cod sursa (job #2648019) | Cod sursa (job #943032) | Cod sursa (job #1539253) | Cod sursa (job #1639591) | Cod sursa (job #478520)
Cod sursa(job #478520)
#include <stdio.h>
#include <stdlib.h>
long long parantezare(int *d, int n)
{
int i, j, k, l, q;
long long **m = (long long **)malloc(sizeof(long long *) * (n + 1));
for (i = 0; i <= n; i++)
m[i] = (long long *)calloc(n + 1, sizeof(long long));
for (l = 2; l <= n; l++)
for (i = 1; i <= n - l + 1; i++)
{
j = i + l - 1;
m[i][j] = -1;
for (k = i; k < j; k++)
{
q = m[i][k] + m[k + 1][j] + d[i - 1] * d[k] * d[j];
if ((q < m[i][j] || m[i][j] == -1) && m[i][k] != -1 && m[k + 1][j] != -1) m[i][j] = q;
}
}
return m[1][n];
}
int main()
{
int n, *d, i;
long long r;
FILE *f, *g;
f = fopen("podm.in", "r");
g = fopen("podm.out", "w");
fscanf(f, "%d", &n);
d = (int *)malloc(sizeof(int) * (n + 1));
for (i = 0; i <= n; i++)
fscanf(f, "%d", &d[i]);
r = parantezare(d, n);
fprintf(g, "%lld\n", r);
fclose(f);
fclose(g);
return 0;
}