#include <stdio.h>
long max3(long a, long b, long c)   //求出3个long中的最大值
{if (a > b) a = b;  //用a保存a、b中的最大值if (a > c) return a;   //比较返回a、c的最大值 else return c;    //a大返回a,c大返回c
}
long maxSubSum(int a[], int left, int right)    //求a[left...right]序列中的最大连续子序列和
{int i, j;long maxLeftSum, maxRightSum;long maxLeftBorderSum, leftBorderSum;long maxRightBorderSum, rightBorderSum;if (left == right) //left==right说明子序列只有一个元素{if (a[left] > 0)  //大于时返回自身,小于0时返回0return a[left];elsereturn 0;}int mid = (left + right) / 2;    //中间位置maxLeftSum = maxSubSum(a, left, mid);    //求左边的最大连续子序列之和maxRightSum = maxSubSum(a, mid + 1, right);    //求右边最大连续子序列之和maxLeftBorderSum = 0, leftBorderSum = 0;for (i = mid; i >= left; i--)  //求出以左边加上a[mid]元素构成的序列的最大和{leftBorderSum += a[i];if (leftBorderSum > maxLeftBorderSum)maxLeftBorderSum = leftBorderSum;}maxRightBorderSum = 0, rightBorderSum = 0;for (j = mid + 1; j <= right; j++)    //求出a[mid]右边元素构成的序列的最大元和{rightBorderSum += a[j];if (rightBorderSum > maxRightBorderSum)maxRightBorderSum = rightBorderSum;}return max3(maxLeftSum, maxRightSum, maxLeftBorderSum + maxRightBorderSum); //返回左部分、右部分以及以mid为中心的最大连续子序列和三者中的最大值
}int main()
{int a[] = { -2,11,-4,13,-5,-2 }, n = 6;int b[] = { -6,2,4,-7,5,3,2,-1,6,-9,10,-2 }, m = 12;printf("a序列的最大连续子序列的和:%ld\n", maxSubSum(a, 0, n - 1));printf("b序列的最大连续子序列的和:%ld\n", maxSubSum(b, 0, m - 1));}

【算法】求解最大连续子序列和的问题相关推荐

  1. 蛮力法 —— 求解最大连续子序列和问题

    问题:求解最大连续子序列和问题 题目: 给定一个有n(n>=1)个整数的序列,求解其中最大连续子序列的和.规定一个序列的最大子序列和至少为0,若结果小于0,则其结果为0 例:序列(-2,11,- ...

  2. 求解最大连续子序列和问题----蛮力法

    文章预览 问题:求解最大连续子序列和问题 思路一:穷举法 思路二:穷举法 思路三:穷举法 问题:求解最大连续子序列和问题 题目: 给定一个有n(n>=1)个整数的序列,求解其中最大连续子序列的和 ...

  3. 求解最大连续子序列和问题(Java)蛮力法+分治法

    求解最大连续子序列和问题 [问题描述] 给定一个有n(n>=1)个整数的序列,要求求出其中最大连续子序列的和. [样例输入] 6 -2 11 -4 13 -5 -2 [样例输出] 20 [问题求 ...

  4. 算法分析:采用蛮力法(循环) 求解最大连续子序列和问题。给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和。 例如: 序列(-2,11,-4,13,-5,-2)

    一.效果图 二.源代码 package sy4; import java.util.Scanner; /** * @author * */ public class Sy4_2 { static vo ...

  5. 【算法】求解最大连续子序列和问题

    程序代码: #include <stdio.h> #define max(x,y) ((x)>(y)?(x):(y)) #define MAXN 20 //问题表示 int n = ...

  6. 蛮力法求解最大连续子序列和问题

    问题描述 给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和. 例如: 序列(-2,11,-4,13,-5,-2)的最大子序列和为20 序列(-6,2,4,-7,5,3,2,-1,6, ...

  7. 54 - 算法 - 动态规划问题 连续子序列和最大

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cmath ...

  8. 动态规划法求解最大连续子序列和问题

    问题描述 给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和. 例如 序列(-2,11,-4,13,-5,-2)的最大子序列和为20 序列(-6,2,4,-7,5,3,2,-1,6,- ...

  9. 最大连续子序列和-动态规划

    题目描述: 给定K个整数的序列{ N1, N2, -, NK },其任意连续子序列可表示为{ Ni, Ni+1, -, Nj },其中 1 <= i <= j <= K.最大连续子序 ...

最新文章

  1. linux的阻塞waitqueue,Linux阻塞控制 wait_event与wait_event_interruptible函数详解
  2. jasp报错_JSP报错!成功解决问题200+追加分数!
  3. 爬虫模拟登陆手机验证码_网络爬虫干货总结,这次比较全面!
  4. Java—File类详解及实践
  5. 比特币 Logo 背后有哪些历史及象征意义?Logo 上的“B”为什么会向右倾斜?
  6. 20200314:字母异位词分组(leetcode49)
  7. Git小乌龟的安装及简单使用
  8. 超星阅读器pdz文件转为xps文件或pdf文件说明
  9. 给初学者推荐一个【免费的PHP教学视频】
  10. 3月13日云栖精选夜读 | Serverless 风暴来袭,前端工程师如何应对?...
  11. kali2022.1安装google chrome develop 专业版
  12. LaTeX中的中文处理方法
  13. Python 成为最受欢迎的语言靠实力吗?
  14. 数据分析01 - 规范化方法
  15. 创造正面影响力的社群网 在Facebook能直接捐款给非营利公益组织
  16. 【3dsMax】如何用VSocde写最简单的MaxScript脚本
  17. day 03-运算符学习
  18. 无能狂怒之“恢复VSCode按Enter键换行”问题
  19. js实现数据统计分类
  20. 关键词提取(3):主题模型:LSI模型

热门文章

  1. java如何进行内存自动释放、垃圾回收?
  2. linux系统中uboot的基本原理与实现方法
  3. qq服务器怎么修复不了,qq可以上网其他不能联网如何修复
  4. 超全,我梳理了最频繁使用的 70 个数据分析网址
  5. Cocos2d-x中图字原理之深入分析
  6. 一、全文检索引擎的介绍
  7. %@ Page% page指令属性
  8. 别翻了,Lambda 表达式入门,看这篇就够了
  9. 什么是字长(百度百科)
  10. 【迁移学习】深度域自适应网络DANN模型