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

美丽世界孤儿66

美丽世界孤儿66

2016-02-19 10:53

今天图老师小编给大家介绍下求子数组最大和的实例代码,平时喜欢求子数组最大和的实例代码的朋友赶紧收藏起来吧!记得点赞哦~

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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

代码如下;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

代码如下:

#include stdio.h
#define max(a,b) (a)(b)?(a):(b)

int res(int* arr, int len){
    //学到一个定义最小数的方法:)
    int max = -(131);
    int i;
    for(i=1;ilen;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("%dn",res(arr,8));
    return 0;
}

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
求子数组最大和的实例代码

javascript创建数组的最简代码

Web开发
javascript创建数组的最简代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Javascript实例教程(18) 数组

Web开发
Javascript实例教程(18) 数组

javascript下过滤数组重复值的代码

Web开发
javascript下过滤数组重复值的代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ajax实例入门代码

Web开发
ajax实例入门代码

javascript实例教程(18) 数组

电脑网络
javascript实例教程(18) 数组

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

html读出文本文件内容

html读出文本文件内容

点九图片的显示内容区域应作何理解

点九图片的显示内容区域应作何理解
下拉加载更多内容 ↓