问题描述
思路分析
此题需要三个循环来实现,第一重循环控制子段和的起始位置,第二重循环控制子段中的元素个数即有多少个元素进行求和,第三个循环用于求子段的和,注意各个变量初始化的位置
程序源代码以及运行结果截图
程序源代码
//求解连续子段的最大和问题
//从一组数据(长度为 n,其中 n <= 10000,数据的值都大于 -60000)中找出连续的一段数,使得这段数的和最大。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 10000
int main()
{
int number, sum, max;
int data[N];
while (scanf("%d", &number) != EOF)
{
max = 0;
for (int i = 0; i < number; i++)
{
scanf("%d", &data[i]);
}
for (int i = 0; i < number; i++)
{
for (int j = i+1; j <= number ; j++)
{
sum = 0;
for (int k = i; k < j; k++)
{
sum = sum + data[k];
}
if (sum > max)
max = sum;
}
}
printf("%d\n", max);
}
}
运行效果截图