浙大数据结构课后题记录(C语言)
编程题
01-复杂度2 Maximum Subsequence Sum (25 分)
题目如下:
思路
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int MaxSubseqSum4(int A[],int N)
{
int ThisSum,MaxtSum,Count;
int t=0,i;
A[N] = A[N+1] = 0;
ThisSum=0;
MaxtSum=-1;
for(i = 0; i < N; i++)
{
ThisSum += A[i];
if(ThisSum > MaxtSum)
{
MaxtSum = ThisSum;
A[N] = t;
A[N+1] = i;//最大子列和的 结束位
}
else if(ThisSum < 0)
{
ThisSum = 0;
t = i + 1;
}
if(!MaxtSum)//最大为零 则更新开始位为i开始
{
A[N] = 0;
}
}
return MaxtSum;
}
int main()
{
int i,m,n,*sort;
scanf("%d",&n);
sort =(int*)malloc((n+2)*sizeof(int*));//申请内存 多余两个作为开始位和结束位
for(i=0;i<n;i++)
scanf("%d",&sort[i]);
m = MaxSubseqSum4(sort,n);
if(m<0)
{
printf("0 %d %d",sort[0],sort[n-1]);
}
else
{
printf("%d %d %d",m+1,sort[n],sort[n+1]);
}//最大子列和 开始位和结束位
return 0;
}