Pagini recente » Cod sursa (job #614706) | Cod sursa (job #2846395) | Cod sursa (job #862651) | Cod sursa (job #1387287) | Cod sursa (job #2050404)
#include <fstream>
#define nmax 505
#define inf 20000000000000
using namespace std;
fstream f1("podm.in", ios::in);
fstream f2("podm.out", ios::out);
int n, d[nmax];
long long int pd[nmax][nmax];
///dim matricei a[i]- d[i-1][i]
///pd[i][j]= nrmin de inmultiri pentru a calc inmultirea matricilor a[i], a[i+1],.., a[j]
int main()
{
int i, k, x;
f1>>n;
for(i=1; i<=n+1; i++)
f1>>d[i];
///caz part k=1;
for(i=1; i<n; i++)
pd[i][i+1]=d[i]*d[i+1]*d[i+2];
for(k=2; k<=n; k++)
{
for(i=1; i<=n-k; i++)
{
pd[i][i+k]= inf;
for(x=0; x<k; x++)
if(pd[i][i+k]> (pd[i][i+x]+ pd[i+x+1][i+k]+ d[i]* d[i+x+1]* d[i+k+1])) pd[i][i+k]=pd[i][i+x]+ pd[i+x+1][i+k]+ d[i]* d[i+x+1]* d[i+k+1];
}
}
f2<<pd[1][n];
return 0;
}