您的位置:首页 > 其它

能量项链-动态规划

2013-01-26 12:32 260 查看
http://www.rqnoj.cn/Problem_5.html

总结:

1、测试总是有五个点错误,郁闷得很,找不到问题所在

2、类似矩阵连乘

#include <iostream>

#include <stdlib.h>

using namespace std;

int main()

{

int num = 0;//珠子个数

int head[100]={0};//保存下标

int maxPower;//最大能量

int r,j,k;//k 宽度,r行,j断开位置

int i=0;

int max[101][202]={0};

cin>>num;

for (i=0; i<num; i++) cin>>head[i];

for (r=0; r<num; r++) max[r][r] = 0;

for (k=2; k<=num; k++)

{

for (r=0; r<num; r++)

{

max[r][r+k-1] = head[r]*head[(r+1)%num]*head[(r+k)%num]+max[r+1]

[r+k-1];//在第r处断开

for (j=2; j<=k-1; j++)

{

maxPower = max[r][r+j-1] + max[r+j][r+k-1] + head[r]*head

[(r+j)%num]*head[(r+k)%num];

//cout<<"maxPower"<<maxPower;

max[r][r+k-1] = max[r][r+k-1]>=maxPower ? max[r][r+k-1] :

maxPower;

}//j断开位置

cout<<"max["<<r<<"]["<<r+k-1<<"]:"<<max[r][r+k-1]<<" ";

}//row 行

cout<<endl;

}//宽度

maxPower = max[0][num-1];

for (r=1; r<num; r++) maxPower = maxPower>max[r][r+num-1] ? maxPower : max[r]

[r+num-1];

// maxPower = 323456789;

cout<<maxPower;

getchar();

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: