Cod sursa(job #3203972)
| Utilizator | Data | 15 februarie 2024 09:31:12 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 20 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
const int NMAX = 502, INF = 1e9;
int n, d[NMAX], dp[NMAX][NMAX];
int min_chain(int i, int j){
if(i == j) return 0;
int _min = INF, cnt = 0;
for(int k = i; k < j; k++){
cnt = min_chain(i, k) + min_chain(k + 1, j) + d[i - 1] * d[k] * d[j];
_min = min(cnt, _min);
}
return _min;
}
int main()
{
fin >> n;
for(int i = 0; i <= n; i++) fin >> d[i];
fout << min_chain(1, n);
return 0;
}
