首页 > 其他分享 >最大连续子数组和(最大子段和)

最大连续子数组和(最大子段和)

时间:2024-04-10 17:23:25浏览次数:18  
标签:curr 最大 子段 int max far so 数组

include <stdio.h>

// 函数用于返回给定数组的最大子段和
int maxSubArraySum(int a[], int size) {
int max_so_far = a[0]; // 初始化最大子段和为数组的第一个元素
int curr_max = a[0]; // 初始化当前子段和为数组的第一个元素

for (int i = 1; i < size; i++) {  
    // 如果当前元素加上之前的子段和比当前元素本身大,则更新当前子段和  
    curr_max = (a[i] > curr_max + a[i]) ? a[i] : curr_max + a[i];  

    // 更新最大子段和  
    if (curr_max > max_so_far)  
        max_so_far = curr_max;  
}  

// 如果所有数都是负数,返回0  
return (max_so_far > 0) ? max_so_far : 0;  

}

int main() {
int n;
printf("请输入数组的长度n: ");
scanf("%d", &n);

int a[n];  
printf("请输入%d个整数:\n", n);  
for (int i = 0; i < n; i++) {  
    scanf("%d", &a[i]);  
}  

int max_sum = maxSubArraySum(a, n);  
printf("最大子段和为: %d\n", max_sum);  

return 0;  

}

标签:curr,最大,子段,int,max,far,so,数组
From: https://www.cnblogs.com/zhaozhaoke/p/18126473

相关文章

  • 后缀数组--SA--字符串
    SA(SuffixArray)--后缀数组简介这里明白两个定义:\(SA_i\):按字典序排列后大小为\(i\)的后缀的后缀头的下标。\(Rank_i\):后缀头的下标为\(i\)按字典序排列后的排名。一个显而易见却很重要的结论:\[SA[Rank[i]]=Rank[SA[i]]=i\]如何进行后缀排序?暂且挂oi......
  • 2024-04-10:用go语言,考虑一个非负整数数组 A, 如果数组中相邻元素之和为完全平方数,我们
    2024-04-10:用go语言,考虑一个非负整数数组A,如果数组中相邻元素之和为完全平方数,我们称这个数组是正方形数组。现在要计算A的正方形排列的数量。两个排列A1和A2被认为是不同的,如果存在至少一个索引i,满足A1[i]!=A2[i]。输入:[1,17,8]。输出:2。答案2024-04-10:来自左......
  • 小美的数组操作(美团2024届秋招笔试第二场编程真题)
    题面核心思想可以从示例中看出当sum/n能够整除时我们选择平均数作为众数即可不能整除时也就表示着不可能让所有数相同那么我们可以舍弃掉一个数a记剩下的数集合为b那么当b需要+1或-1后可能会剩下一些数那么我们可以选择让a去执行相反操作从而不影响b中剩......
  • 力扣经典150题第十三题:除自身以外数组的乘积
    目录力扣经典150题第十三题:除自身以外数组的乘积1.简介2.问题分析3.解题思路方法一:左右乘积列表方法二:优化空间复杂度4.代码实现5.时间复杂度分析6.应用和扩展7.总结8.参考资料力扣经典150题第十三题:除自身以外数组的乘积1.简介本文介绍如何设计一个算......
  • 2月智能手表线上电商市场(京东天猫淘宝)分析:华为手表成最大赢家!
    近年来,各大厂商纷纷积极布局健康管理领域,智能手表成为可穿戴市场的热门产品。随着越来越多的厂商进入,智能手表的芯片技术、显示屏技术、传感器技术等都在不断进步,整体性能和功能得到显著提升,使得用户体验更加出色。而今年2月,智能手表市场却遇冷,销量销额都有所下滑。根据鲸参谋......
  • Java入门基础知识第八课(数组)——冒泡排序、Arrays工具类
    前面二白讲了关于数组的概念、语法以及简单的输入输出,实际上关于数组的知识还有很多,接下来咱们讲一下冒泡排序以及一些常用的Arrays工具类,需要记忆的知识很多,而且容易混淆。一、冒泡排序简介(原理)升序为例:从头开始,每次比较相邻两数小的交换到前面每轮结束后最大的数交换到......
  • 最大连续子数组和的实现
    题目:最大连续子数组和求解问题一、背景:问题:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为:Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n例如,当(a[1],a[2],a[3......
  • 从二维数组到一维数组——探索01背包问题的动态规划优化
    文章目录题目前知背包问题二维dp数组一、思路二、解题方法三、Code一维dp数组一、思路二、解题方法三、Code总结本文将继续上一篇博客爬楼梯之后继续讲解同样用到了动态规划的01背包问题在解决动态规划问题时,我们经常面临着空间复杂度的挑战。01背包问题是一个......
  • Offer必备算法23_两个数组dp_八道力扣题详解(由易到难)
    目录①力扣1143.最长公共子序列解析代码②力扣1035.不相交的线解析代码③力扣115.不同的子序列解析代码④力扣44.通配符匹配解析代码⑤力扣10.正则表达式匹配解析代码⑥力扣97.交错字符串解析代码⑦力扣712.两个字符串的最小ASCII删除和解析代码⑧力扣71......
  • js 常用数组函数 join() 拼接, push()尾部添加、pop()移除最后一项、shift()删除第一项
    js常用数组函数join()拼接,push()尾部添加、pop()移除最后一项、shift()删除第一项、unshift()头部添加、sort()小到大顺序排列、slice()截取获取新数组、splice()分隔截取数组、concat()连接、reverse()反转文章目录1.join()函数2.push()函数3.pop()函数4.sh......