讨论 / pid5,能量项链 50分 求大牛帮忙
qq948938124 2014-01-12 06:18:40
点我顶贴 收藏 删除
用动规做的,百度上标程的思想,大家帮忙看下,谢谢了

var

n,i,j,k,l,m,x:longint;

a:array[1..201]of longint;

dg:array[1..201,1..201]of longint;

begin

read(n);

for i:=1 to n do

begin

read(a[i]);

a[i+n]:=a[i];

end;

a[2*n+1]:=a[1];

for i:=1 to (n*2+1) do

begin

for j:=1 to (n*2+1) do

dg[i,j]:=0;

end;

for i:=1 to (n-1) do

for j:=1 to n do

begin

for k:= j to (j+i-1) do

begin

x:=(dg[j,k]+dg[k+1,j+i]+(a[j]*a[k+1]*a[j+i+1]));

if x>dg[j,j+i] then

dg[j,j+i]:=x;

end;

end;

x:=dg[1,n];

for i:=2 to n do

begin

if x<dg[i,i+n-1] then

x:=dg[i,i+n-1];

end;

write(x);

end.

#1 nbcxwqzxmxh@2014-01-12 17:41:25
回复 删除
表示c++党看不懂pascal、、

#include<iostream>

#include<cstring>

using namespace std;

int n,e[201],f[201][201],ans=0;

int main()

{

cin >> n;

for (int i=1;i<=n;i++)

{

cin >> e[i];

e[i+n]=e[i];

}

memset(f,0,sizeof(f));

for (int i=2; i<2*n;i++)

for (int j=i-1;j>=1 && i-j<n;j--)

{

for (int k=j;k<i;k++)

{

int tem = f[j][k] + f[k+1][i] + e[j]*e[k+1]*e[i+1];

if (tem>f[j][i]) f[j][i] = tem;

}

if (f[j][i]>ans) ans=f[j][i];

}

cout << ans << endl;

return 0;

}

#2 nbcxwqzxmxh@2014-01-12 17:41:43
回复 删除
。。。我的天。。缩进被吞了。。
#3 qq948938124@2014-01-12 23:32:04
回复 删除
回复 #1 nbcxwqzxmxh:c++看不懂。。。。
查看更多回复
提交回复