#include<stdio.h>
/*
6
-100 230 120 -150 300 -250
*/
int main() {
int n;
scanf("%d",&n);
int arr[n];
for (int i=0; i<n; i++) {
scanf("%d",&arr[i]);
}
// 贪心法或者暴力法
int max = arr[0];
// 暴力法
// for (int i=0; i<n; i++) { // 不同的开始位置
// int cur = 0;
// for (int j=i; j<n; j++) {
// cur = cur + arr[j];
// if (cur > max) {
// max = cur;
// }
// }
// }
// 贪心法,加上arr[i]若小于0就重新计算sum
int sum = 0; // 记录当前扫描的连续数组和最大值
for (int i=0; i<n; i++) {
if (sum < 0) {
sum = 0;
}
sum = sum + arr[i];
max = max > sum ? max : sum;
}
printf("%d",max);
return 0;
}
【算法】最大连续子数组和
最新推荐文章于 2024-09-21 14:48:47 发布
本文介绍了如何使用C语言实现一个算法,计算给定整数数组中连续子数组的和,目标是找到最大的正和。提供了贪心法和暴力法两种解决方案。
摘要由CSDN通过智能技术生成