Pagini recente » Cod sursa (job #94105) | Cod sursa (job #3148453) | Cod sursa (job #845472) | Cod sursa (job #2284561) | Cod sursa (job #2953396)
#include <fstream>
using namespace std;
ifstream cin("podm.in");
ofstream cout("podm.out");
///////////////////////////////////////
const int MAX = 5e2 + 1;
const int INF = MAX * (1e4+1);
int v[MAX] , n;
long long dp[MAX][MAX];
////////////////////////////////////
long long dinamica( int x , int y ){
if(dp[x][y] != INF) return dp[x][y];
if( y - x < 2 ){
dp[x][y] = 0;
return dp[x][y];
}
for(int i = x + 1 ; i < y ; i++){
dp[x][y] = min(dp[x][y] , dinamica(x,i) + dinamica(i,y) + v[x] * v[y] * v[i]);
}
return dp[x][y];
}
int main(){
cin >> n;
n++;
for(int i = 1 ; i <= n ; i++){
cin >> v[i];
}
// base case
for(int i = 1 ; i <= n ; i++){
for(int j = i ; j <= n ; j++) dp[i][j] = INF;
}
cout << dinamica(1,n);
return 0;
}