Pagini recente » Cod sursa (job #378873) | Cod sursa (job #378895) | Cod sursa (job #3286615) | Cod sursa (job #235861) | Cod sursa (job #3291365)
#include<iostream>
#include<fstream>
using namespace std;
int dims[1000];
int dp[1000][1000];
int getC(int i){
return dims[i+1];
}
int getR(int i){
return dims[i];
}
int din(int n){
for(int i=1;i<=n;i++){
dp[i][i]=0;
dp[i][i+1]=getR(i)*getC(i)*getC(i+1);
}
for(int lungimeInterval=3;lungimeInterval<=n;lungimeInterval++){
int stopInterval=lungimeInterval;
for(int startInterval=1;stopInterval<=n;startInterval++,stopInterval++){
int inm=getR(startInterval)*getC(stopInterval);
dp[startInterval][stopInterval]=dp[startInterval+1][stopInterval]+inm*getC(startInterval);
for(int k=startInterval+1;k<stopInterval;k++){
int x=dp[startInterval][k]+dp[k+1][stopInterval]+inm*getC(k);
dp[startInterval][stopInterval]=min(dp[startInterval][stopInterval],x);
}
}
}
// for(int i=1;i<=n;i++){
// for(int j=i;j<=n;j++){
// cout<<i<<" "<<j<<" "<<dp[i][j]<<"\n";
// }
// }
return dp[1][n];
}
int main(){
ifstream fin("podm.in");
ofstream fout("podm.out");
int n;
fin>>n;
for(int i=1;i<=n+1;i++){
fin>>dims[i];
}
// cout<<"gata\n";
// cout.flush();
fout<<din(n);
fin.close();
fout.close();
return 0;
}