讨论 / 石子归并型的题,用DP做,循环怎么写?
ruilianglv 2010-08-06 23:26:00
点我顶贴 收藏 删除
就假如题是这样的,石子都摆在一条直线上,每次只能合并相邻的两堆,那么就有

f[i][j]=min{f[i][k]+f[k+1][j] | i<k<j},初始化f[i][i+1]=h[i]+h[i+1],而答案是f[1][N]。

循环假如这么写

for(i=1;i<=N-1;i++)

for(j=i+1;j<=N;j++)

这样肯定是错的

那应该怎样写?谢谢

#1 ruilianglv@2010-08-06 23:26:00
回复 删除
啊我知道了应该这么写:

for(j=2;j<=N;j++)

for(i=j-1;i>=1;i--)

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

{

...

}

能量项链就这么写,没有debug直接AC,哈哈..

测试结果1: 通过本测试点|有效耗时62ms

测试结果2: 通过本测试点|有效耗时47ms

测试结果3: 通过本测试点|有效耗时47ms

测试结果4: 通过本测试点|有效耗时47ms

测试结果5: 通过本测试点|有效耗时47ms

测试结果6: 通过本测试点|有效耗时47ms

测试结果7: 通过本测试点|有效耗时47ms

测试结果8: 通过本测试点|有效耗时46ms

测试结果9: 通过本测试点|有效耗时47ms

测试结果10: 通过本测试点|有效耗时47ms

查看更多回复
提交回复