【算法】求解最大连续子序列和的问题
#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));}
【算法】求解最大连续子序列和的问题相关推荐
- 蛮力法 —— 求解最大连续子序列和问题
问题:求解最大连续子序列和问题 题目: 给定一个有n(n>=1)个整数的序列,求解其中最大连续子序列的和.规定一个序列的最大子序列和至少为0,若结果小于0,则其结果为0 例:序列(-2,11,- ...
- 求解最大连续子序列和问题----蛮力法
文章预览 问题:求解最大连续子序列和问题 思路一:穷举法 思路二:穷举法 思路三:穷举法 问题:求解最大连续子序列和问题 题目: 给定一个有n(n>=1)个整数的序列,求解其中最大连续子序列的和 ...
- 求解最大连续子序列和问题(Java)蛮力法+分治法
求解最大连续子序列和问题 [问题描述] 给定一个有n(n>=1)个整数的序列,要求求出其中最大连续子序列的和. [样例输入] 6 -2 11 -4 13 -5 -2 [样例输出] 20 [问题求 ...
- 算法分析:采用蛮力法(循环) 求解最大连续子序列和问题。给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和。 例如: 序列(-2,11,-4,13,-5,-2)
一.效果图 二.源代码 package sy4; import java.util.Scanner; /** * @author * */ public class Sy4_2 { static vo ...
- 【算法】求解最大连续子序列和问题
程序代码: #include <stdio.h> #define max(x,y) ((x)>(y)?(x):(y)) #define MAXN 20 //问题表示 int n = ...
- 蛮力法求解最大连续子序列和问题
问题描述 给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和. 例如: 序列(-2,11,-4,13,-5,-2)的最大子序列和为20 序列(-6,2,4,-7,5,3,2,-1,6, ...
- 54 - 算法 - 动态规划问题 连续子序列和最大
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cmath ...
- 动态规划法求解最大连续子序列和问题
问题描述 给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和. 例如 序列(-2,11,-4,13,-5,-2)的最大子序列和为20 序列(-6,2,4,-7,5,3,2,-1,6,- ...
- 最大连续子序列和-动态规划
题目描述: 给定K个整数的序列{ N1, N2, -, NK },其任意连续子序列可表示为{ Ni, Ni+1, -, Nj },其中 1 <= i <= j <= K.最大连续子序 ...
最新文章
- linux的阻塞waitqueue,Linux阻塞控制 wait_event与wait_event_interruptible函数详解
- jasp报错_JSP报错!成功解决问题200+追加分数!
- 爬虫模拟登陆手机验证码_网络爬虫干货总结,这次比较全面!
- Java—File类详解及实践
- 比特币 Logo 背后有哪些历史及象征意义?Logo 上的“B”为什么会向右倾斜?
- 20200314:字母异位词分组(leetcode49)
- Git小乌龟的安装及简单使用
- 超星阅读器pdz文件转为xps文件或pdf文件说明
- 给初学者推荐一个【免费的PHP教学视频】
- 3月13日云栖精选夜读 | Serverless 风暴来袭,前端工程师如何应对?...
- kali2022.1安装google chrome develop 专业版
- LaTeX中的中文处理方法
- Python 成为最受欢迎的语言靠实力吗?
- 数据分析01 - 规范化方法
- 创造正面影响力的社群网 在Facebook能直接捐款给非营利公益组织
- 【3dsMax】如何用VSocde写最简单的MaxScript脚本
- day 03-运算符学习
- 无能狂怒之“恢复VSCode按Enter键换行”问题
- js实现数据统计分类
- 关键词提取(3):主题模型:LSI模型