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;
}