Pagini recente » Cod sursa (job #3294181) | Cod sursa (job #2563472) | Cod sursa (job #65433) | Cod sursa (job #3133444) | Cod sursa (job #929271)
Cod sursa(job #929271)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
const long long INF = 1LL << 60;
int n, i, j, diag;
int d[505];//dimensiunile matricelor
long long best[505][505];//minimul de inmultiri
struct cuplu{
int lin, col;
}dim[505][505];
//void afisare() {
// for (i = 1; i <= n; ++i) {
// for (j = 1; j <= n; ++j)
// cout << setw(4) << best[i][j] << ' ';
// cout << '\n';
// }
// cout << "\n\n";
//}
int main() {
fin >> n;
for (i = 0; i <= n; ++i)
fin >> d[i];
for (i = 1; i < n; ++i)//initializez
best[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
for (diag = 2; diag < n; ++diag)
for (i = 1; i <= n - diag; ++i) {
j = i + diag;
best[i][j] = INF;
for (int k = i; k < j; ++k)
best[i][j] = min(best[i][j], best[i][k] + best[k + 1][j] + d[i - 1] * d[k] * d[j]);
}
fout << best[1][n - 1];
fin.close();
fout.close();
return 0;
}