能量项链-动态规划

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值