浙大数据结构课后题记录(C语言)
编程题
01-复杂度1 最大子列和问题 (20 分)
题目:
这是上了陈越姥姥的课之后第一次写代码,函数是抄姥姥的(手动狗头),在姥姥的帮助下,我修缮了部分代码,并将之写入我的模板之中,记录一下自己的做题过程。
思路:算法的实现主要在MaxSubseqSum4()函数之中,通过累加,舍弃小于0的值来最终得到最大子列和(感觉说不出代码的精妙,上代码看看)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
//陈越姥姥的代码(PS:I'm so vegetables)
int MaxSubseqSum4(int A[],int N)
{
int ThisSum,MaxtSum;
int i;
ThisSum=MaxtSum=0;
for(i = 0; i < N; i++)
{
ThisSum += A[i];
if(ThisSum > MaxtSum)//如果大于之前的最大值,就进行替换
MaxtSum = ThisSum;
else if(ThisSum < 0)//如果本次小于0,就重新开始
ThisSum=0;
}
return MaxtSum;
}
int main()
{
int i,m,n,*sort;
scanf("%d",&n);
sort =(int*)malloc(n*sizeof(int*));//申请动态内存
for(i=0;i<n;i++)
scanf("%d",&sort[i]);
m = MaxSubseqSum4(sort,n);
printf("%d\n",m);
return 0;
}
PS:刚刚学完C的语法,正在学习算法,语言表达能力可能不太好,希望大家谅解,欢迎交流,望有大佬指正代码不足之处。