课堂作业求数组中最大子数组的和

#include <stdio.h>
#include <string.h>

int max(int* str, int l)
{
int ma = 0; //全负情况,返回最大数
int sum = 0;
for (int i = 0; i < l; i++)
{
if (sum >= 0) //如果sum>=0的话,就加
sum += str[i];
else
sum = str[i]; //如果加上某个元素,sum<0了,就不加
if (sum > ma)
ma = sum;
}
return ma;
}

int main()
{
int str[100];
int i = 0;
int l;
while (1)
{
printf("请输入长度\n");
scanf_s("%d", &l);
printf("请输入数组\n");
for (i; i < l; i++)
{
scanf_s("%d,", &str[i]);
}
printf("%d\n", max(str, i));
memset(str, 0, i * sizeof(int));
i = 0;
}
return 0;
}

 

posted @ 2019-10-17 15:46  知识图谱学习  阅读(80)  评论(0编辑  收藏  举报