Mai intai trebuie sa te autentifici.
Cod sursa(job #2795346)
Utilizator | Data | 6 noiembrie 2021 11:36:08 | |
---|---|---|---|
Problema | Parantezare optima de matrici | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.65 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("a.in");
ofstream g ("a.out");
int n;
int dim[501],dp[501][501];
int main()
{
f >> n;
for(int i = 1;i<=n+1;i++)
f >> dim[i];
int dif = 1,i,j;
while(dif!=n-1)
{
i = 1;
j = i+dif;
for(int k = i;k<=j-1;k++)
{
if(dp[i][j]==0)
{
dp[i][j] = dp[i][k] + dp[k+1][j] + (dim[k]*dim[i]*dim[j]);
}
else
{
dp[i][j] = min(dp[i][j],dp[i][k] + dp[k+1][j] + (dim[k]*dim[i]*dim[j]));
}
}
}
g<<dp[1][n];
}