讨论 / 求思路
zfj19960705 2012-03-19 04:39:00
点我顶贴 收藏 删除
知道要用DP,但不知道用怎样的DP,求解释啊!
#1 waiting~@2012-03-19 04:39:00
回复 删除
program xianglian(input,output);

const

maxn=100000;

var

p:array[1..100000] of longint;

f:array[0..10000,0..10000] of longint;

n,ans,i,j,k,l:longint;

begin

readln(n);

for i:=1 to n do

begin

read(p[i]);

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

end;

for l:=1 to n-1 do

for i:=1 to 2*n-1 do

begin

j:=i+l;

if j>2*n-1 then

break;

for k:=i to j-1 do

if f[i,j]<f[i,k]+f[k+1,j]+p[i]*p[k+1]*p[j+1] then

f[i,j]:=f[i,k]+f[k+1,j]+p[i]*p[k+1]*p[j+1];

end;

for i:=1 to n do

if f[i,i+n-1]>ans then

ans:=f[i,i+n-1];

writeln(ans);

end.

查看更多回复
提交回复