Cod sursa(job #517032)

Utilizator ionicaion ionica Data 27 decembrie 2010 16:48:59
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream.h>
#define NMAX 99
typedef long long  matrice[501][501];
matrice m;
long long p[501];

int main()
{long long n,i,j,k,im,d;
long long v,min;
 ifstream f("podm.in");
 ofstream g("podm.out");
 f>>n;
 for(i=1;i<=n+1;i++)f>>p[i];
 f.close();
 for(i=1;i<=n;i++)m[i][i]=0;
 for(d=2;d<=n;d++)
   for(i=1,j=d;j<=n;i++,j++)
     {min=m[i][i]+m[i+1][j]+p[i]*p[i+1]*p[j+1];
      im=i;
      for(k=i+1;k<j;k++)
	 {v=m[i][k]+m[k+1][j]+p[i]*p[k+1]*p[j+1];
	  if(min>v){min=v;
		      im=k;
		     }
	  }
      m[i][j]=min;
      }
	 g<<m[1][n]<<'\n';
  //cout<<"Nr. min. de inmultiri este "<<m[1][n]<<endl;
  //cout<<"Ordinea de inmultire:"<<endl;
  //paranteze(1,n);
  //cout<<endl;
  return 0;
}