Pagini recente » aibcex | Cod sursa (job #706044) | Cod sursa (job #801056) | Cod sursa (job #1941749) | Cod sursa (job #2000521)
#include<stdio.h>
#include<stdlib.h>
#define min(a, b) ((a)<(b)?(a):(b))
int d[502];
int m[502][502];
int main() {
FILE *fi, *fo;
int n;
int i, j, k;
fi = fopen("podm.in", "r");
fo = fopen("podm.out", "w");
fscanf(fi, "%d", &n);
for (i = 0; i <= n; i++) {
fscanf(fi, "%d", &d[i]);
}
for (i = 1; i <= n - 1; i++) {
m[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
}
int mn;
int val;
for (k = 2; k < n; k++) {
for (i = 1; i <= n - k; i++) {
m[i][i + k] = m[i][i] + m[i + 1][i + k] + d[i - 1] * d[i] * d[i + k];
for (j = i; j < i + k; j++) {
val = m[i][j] + m[j + 1][i + k] + d[i - 1] * d[j] * d[i + k];
m[i][i + k] = min(m[i][i + k], val);
}
}
}
fprintf(fo, "%d", m[1][n]);
/*for (k = 0; k <= n; k++) {
for (i = 0; i <= n; i++) {
printf("%d ", m[k][i]);
}
printf("\n");
}*/
fclose(fi);
fclose(fo);
}