讨论 / 很简单程序,求哪错了(能量项链)
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;

}

#1 luogan@2010-11-18 18:55:00
回复 删除
项链是一个环,可以以任何一点为起点
#2 刘宇麒@2015-02-03 21:59:49
回复 删除
#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;

}

查看更多回复
提交回复