Pagini recente » Cod sursa (job #108257) | Cod sursa (job #1595438) | Cod sursa (job #674456) | Cod sursa (job #1110599) | Cod sursa (job #2794371)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
int n,i,j,k,l;
long long dp[502][502],v[502];
long long minim(long long a, long long b)
{
if(a<b) return a;
else return b;
}
int main()
{
fin>>n;
for(i=1;i<=n+1;i++) fin>>v[i];
///dp[i][j] = numarul nimin de inmultiri realizat de matricile dintre i si j
for(l=1;l<=n;l++)
{
for(i=1;i<=n-l+1;i++)
{
j=i+l-1;
dp[i][j]=9999999999999;
if(i==j) dp[i][j]=0;
else
for(k=i;k<=j-1;k++)
{
dp[i][j]=minim(dp[i][j],dp[i][k]+dp[k+1][j]+v[i]*v[k+1]*v[j+1]);
}
}
}
fout<<dp[1][n];
return 0;
}