• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 求子数组最大和的实例代码

求子数组最大和的实例代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了求子数组的最大和,求连续子数组的最大和,分治法求最大子数组,纸婚2 求子记,重金求子等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。

例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18。

找到状态转移方程,dp[i]表示前i个数中,包含i的子数组的最大和。要么第i个数自己最大,要么他要和包含i-1的子数组最大和(即dp[i-1])联合在一起.
即dp[i] = max{arr[i],dp[i-1]+arr[i]};

代码如下;

int res(int* arr, int len){
    //学到一个定义最小数的方法:)
    int max = -(1<<31);
    int i;
    for(i=1;i<len;i++){
        arr[i] = max(arr[i],arr[i-1]+arr[i]);
        if(max < arr[i]) max = arr[i];
    }
    return max;
}

int main(){
    int arr[] = {1,-2,3,10,-4,7,2,-5};
    printf("%d\n",res(arr,8));
    return 0;
}
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 求子数组最大和的解决方法详解
  • 求子数组最大和的实例代码

相关文章

  • 2017-05-28基于C++浮点数(float、double)类型数据比较与转换的详解
  • 2017-05-28解析四则表达式的编译过程及生成汇编代码
  • 2017-05-28MFC创建模态对话框和非模态对话框的方法
  • 2017-05-28C语言 动态内存分配的详解及实例
  • 2017-05-286个变态的C语言Hello World程序
  • 2022-04-30大话C语言变量和数据类型
  • 2017-05-28解析C语言中结构体struct的对齐问题
  • 2017-05-28C++用mysql自带的头文件连接数据库
  • 2017-05-28举例理解C语言二维数组的指针指向问题
  • 2017-05-28C++中Overload,Override,Hide之间的区别

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 在C++中反射调用.NET的方法(二)
    • 用C语言判断字符是否为空白字符或特殊字符的方法
    • 在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈
    • 内联函数inline与宏定义深入解析
    • C++中vector容器的用法
    • 数据结构之位图(bitmap)详解
    • 使用opencv把图片拼接成视频
    • c++验证哥德巴赫猜想
    • 通俗地理解什么是编程语言
    • 一些C语言中字符串的算法问题解决实例小结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有