Cod sursa(job #3216059)
Utilizator | Dorneanu Diana diana_dd03 | Data | 15 martie 2024 16:45:10 |
---|---|---|---|
Problema | Parantezare optima de matrici | Scor | 80 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.71 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int n;
int m[505];
long long dp[505][505];
int main(){
fin>>n;
for(int i=1;i<=n+1;i++)
fin>>m[i];
//d=i-j
for(int d=1;d<=n-1;d++){
for(int i=1;i<=n-d;i++){
int j=i+d;
for(int h=i;h<=j;h++)
if(dp[i][j]==0)
dp[i][j]=dp[i][h]+dp[h+1][j]+
m[i]*m[h+1]*m[j+1];
else
dp[i][j]=min(dp[i][j],
dp[i][h]+dp[h+1][j]+
m[i]*m[h+1]*m[j+1]);
}
}
fout<<dp[1][n];
return 0;
}