Pagini recente » Cod sursa (job #2310576) | Cod sursa (job #2804602) | Cod sursa (job #3000142) | Cod sursa (job #216394) | Cod sursa (job #3261913)
#include <fstream>
#include <climits>
using namespace std;
ifstream cin("podm.in");
ofstream cout("podm.out");
const int NMAX=501;
int n;
int dp[NMAX][NMAX];
struct mat
{
int cols, rows;
} mats[NMAX];
int main()
{
cin>>n;
int last;
cin>>last;
int current;
for (int i = 1; i <= n; i++) {
cin >> current;
mats[i].rows = last;
mats[i].cols = current;
last = current;
}
for(int lg=1;lg<=n;lg++)
for(int i=1;i<=n-lg+1;i++)
{
int j=i+lg-1;
if(lg==1)
{
dp[i][j]=0;
}
else if(lg==2)
{
dp[i][j]=mats[i].rows*mats[i].cols*mats[j].cols;
}
else
{
dp[i][j]=INT_MAX;
for(int k=i;k<j;k++)
{
dp[i][j]=min(dp[i][k]+dp[k+1][j]+mats[i].rows*mats[k].cols*mats[j].cols, dp[i][j]);
}
}
}
cout<<dp[1][n];
return 0;
}