zoukankan      html  css  js  c++  java
  • 编程算法

    连续子数组的最大和 代码(C)


    本文地址: http://blog.csdn.net/caroline_wendy


    题目: 输入一个整型数组, 数组里有正数也有负数. 数组中一个或连续的多个整数组成一个子数组.求全部子数组的和的最大值.


    使用一个数保存当前和, 假设当前和为小于0,  则替换新值, 否则, 递加, 使用一个数保存暂时最大值.


    代码:

    /*
     * main.cpp
     *
     *  Created on: 2014年6月29日
     *      Author: wang
     */
    
    #include <stdio.h>
    #include <limits.h>
    
    using namespace std;
    
    int GetGreatestSumOfSubArray (int* pData, int length) {
    	if (pData == NULL || length <= 0)
    		return 0;
    	int nCurSum = 0, nGreatestSum = -INT_MAX;
    	for (int i=0; i<length; ++i) {
    		if (nCurSum <= 0) nCurSum = pData[i];
    		else nCurSum += pData[i];
    		if (nCurSum > nGreatestSum)
    			nGreatestSum = nCurSum;
    	}
    	return nGreatestSum;
    }
    
    int main(void)
    {
        int data[] = {1, -2, 3, 10, -4, 7, 2, -5};
        int result = GetGreatestSumOfSubArray(data, 8);
        printf("result = %d
    ", result);
        return 0;
    }
    
    
    

    输出:

    result = 18
    










  • 相关阅读:
    第五次站立会议
    第四次站立会议
    第三次晚间站立总结会议
    易校小程序典型用户需求分析
    第三次站立会议
    第二次晚间站立总结会议
    第二次站立会议
    第一次晚间站立总结会议
    MyBatis注解
    延迟加载与缓存
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3831246.html
Copyright © 2011-2022 走看看