Pagini recente » Cod sursa (job #1447372) | Cod sursa (job #591846) | Cod sursa (job #2382380) | Cod sursa (job #22200) | Cod sursa (job #1366697)
#include <iostream>
#include <fstream>
using namespace std;
#define INF 32767
ifstream in ("podm.in");
ofstream out ("podm.out");
int p[505], m[505][505], s[100][100],coloana, linie, i, j, k, l, q, n;
int main ()
{
// s for solution
in >> n;
for(i = 0; i <= n; i++)
{
in >> p[i];
m[i][0] = 0;
}
for(linie = 2; linie <= n; linie++)
{
for(coloana = 1; coloana <= n - linie + 1; coloana++)
{
j = coloana + linie - 1; // pentru translatare deasupra diagonalei principale
m[coloana][j] = INF;
for(k = coloana; k <= j - 1; k++)
{
q = m[coloana][k] + m[k + 1][j] + p[coloana-1]*p[k]*p[j];
if(q < m[coloana][j] )
{
m[coloana][j] = q;
// s[coloana][j] = k;
}
}
}
}
out<<m[1][n]<<"\n";
return 0;
}
/* cout<<"\n\n\n";
for(i = 0; i <= n; i++)
{
cout.width(7);
cout<<p[i]<<" ";
}
cout<<"\n";
for(i = 1; i <= n; i++)
{
cout<<" ";
for(j = 1; j <= n; j++)
{
cout.width(7);
cout<<m[i][j]<<" ";
}
cout<<"\n";
}
cout<<"\n";
for(i = 1; i <= n; i++)
{
cout<<" ";
for(j = 1; j <= n; j++)
{
cout.width(7);
cout<<s[i][j]<<" ";
}
cout<<"\n";
}
*/