whlhc888 2010-11-18 18:55:00
点我顶贴
收藏
删除
#include<iostream>
using namespace std;
int main(){
int n,i,j,a[102],f[102][102],k,s[102][102];
memset(f,0,sizeof(f));
memset(s,0,sizeof(s));
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
for(i=1;i<=n;i++)for(j=i+1;j<=n;j++)for(k=i;k<=j;k++)f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+i*k*j);
printf("%d",f[1][n]);
return 0;
}
#2 刘宇麒@2015-02-03 21:59:49
33157
回复
删除
#include<iostream>
using namespace std;
int n,e[250],f[250][250]={0};
int main()
{
int i,j,k,mx=0;
cin>>n;
for(i=1;i<=n;i++){
cin>>e[i];
e[n+i]=e[i];
}
for(j=2;j<=2*n-1;j++)
for(i=j-1;i>0&&j-i<n;i--)
for(k=i;k<j;k++)
f[i][j]=max(f[i][k]+f[k+1][j]+e[i]*e[k+1]*e[j+1],f[i][j]);
for(i=1;i<=n;i++)
mx=max(mx,f[i][i+n-1]);
cout<<mx;
return 0;
}