1、最大字段和
1题目分析与算法构造
当所有整数均为负值时定义其最大子段和为0。
由此可得,所求的最优值为:
算法构造:由bj的定义易知,
当bj-1>0时bj=bj-1+aj,否则bj=aj。
由此可得计算bj的动态规划递归式bj=max{bj-1+aj,aj},1≤j≤n。
2.算法实现
#include
using namespace std;
int MaxSum(int n,int a[])
{
int sum=0,b=0;
for(int i=1;i<=n;i++)
{
if(b>0)b+=a[i];
el
2、se b=a[i];
if(b>sum)sum=b;
}
return sum;
}
int main()
{
int n,a[100],m,maxsum;
cout<<"请输入整数序列的元素个数n: "<>n;
cout<<"请输入序列中各元素的值a[i](一共"<>a[m];
int b[100];
for(m=0;m