最大子段和问题
#include<stdio.h>
int main()
{
int a[10]={31,-41,59,26,-53,58,97,-93,-23,84};
int b[10];
/*int i,j,k,sum;
int maxsofar=0;
for(i=0;i<10;i++)
{
for(j=i;j<10;j++)
{
sum=0;
for(k=i;k<j;k++)
{
sum+=a[k];
}
if(sum>maxsofar)
maxsofar=sum;
}
}
printf("%d\n",maxsofar);
}*/
动态规划法:
int
max = 0;
int
b[n+1];
int
start = 0;
int
end = 0;
memset
(b,0,n+1);
for
(
int
i = 1; i <= n; ++i)
{
if
(b[i-1]>0)
{
b[i] = b[i-1]+a[i];
}
else
{
b[i] = a[i];
}
if
(b[i]>max)
max = b[i];
}
优质内容筛选与推荐>>