Pagini recente » Cod sursa (job #2894615) | Cod sursa (job #1783606) | Cod sursa (job #2533391) | Cod sursa (job #1987296) | Cod sursa (job #2256829)
#include <fstream>
#define NMAX 510
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int n;
long long int d[NMAX];
long long int cmin[NMAX][NMAX];
void read();
void pd();
void print();
int main()
{
read();
pd();
print();
return 0;
}
void read(){
int i;
fin >> n;
for(i = 0; i < n + 1; i++)
fin >> d[i];
}
void pd(){
int i, j, k, nr;
long long int minim;
//initializare pt 2 matrice
for(i = 1; i < n; i++)
cmin[i][i + 1] = d[i - 1]*d[i]*d[i + 1];
for(nr = 3; nr <= n; nr++){
//calculez costul pt toate secv de nr matrice
for(i = 1; i <= n - nr + 1; i++){
j = i + nr - 1;//limita
minim = cmin[i + 1][j] + d[i - 1]*d[i]*d[j];
for(k = i + 1; k < j; k++)
if(minim > cmin[i][k] + cmin[k + 1][j] + d[i - 1]*d[k]*d[j]){
minim = cmin[i][k] + cmin[k + 1][j] + d[i - 1]*d[k]*d[j];
}
cmin[i][j] = minim;
}
}
}
void print(){
fout << cmin[1][n] << '\n';
}