给定一个数组,求最大的一:如: num = {-5,12,3,-8,2,-9} 最大的子
原创 2023-01-16 21:46:09
150阅读
这个程序使用分治法计算最大子,结果为最大子之和,用递归程序实现。原始数据使用随机函数生成。采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。数据个数由宏定义给出,也可以轻松地改为输入。/* * 最大子算法程序 */#i...
转载 2016-04-22 12:44:00
133阅读
2评论
一、比较朴素的算法算法思想:我们确定每个子开始的位置,分别为第一个,第二个,第三个......第N个,然后计算从这个位置开始到这个位置之后的每个位置的子,更新记录最大的子。时间复杂度:O(n^2)算法实现(Java):package com.Third; import java.util.*; public class Main3{ public static int max
最大子问题(Maximum Interval Sum)一.问题描述 给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]最大.或者求出最大的这个.例如(-2,11,-4,13,-5,2)的最大子为20,所求子区间为[2,4]。二.算法分析 1.穷举法 1 int start = 0;//起始位置 2 int end = 0; //结束位置 3 int max = 0; 4 for(int i = 1; i <= n; ++i) 5 { 6 for(int j = i; j <= n;++j) 7 { 8 ...
转载 2013-03-07 17:09:00
51阅读
2评论
算法与数据结构 4.3、最大子-分治解法 一、总结 一句话总结: 最大连续子序列的有对应的分治解法,因为连续子序列只能是如下三种情况的一种:①完全处于序列的左半、②跨越序列中间、③完全处于序列的右半。取这三种情况里面的最大值,即可得到本题的解。 ①完全处于序列的左半:l<=i<=j<=mid
转载 2020-06-03 06:39:00
448阅读
2评论
算法与数据结构 4.4、最大子-分治优化原理 一、总结 一句话总结: 在本题中,分治能够优化枚举的原理就是分治策略创造了信息(比如本题第二种情况子序列一定包含mid),让我们可以拿这个信息将枚举从O(n^2)的算法优化到了O(n) 1 //下面代码是没用好分治创造的信息的分治法代码,只能过两个点
转载 2020-06-03 10:10:00
108阅读
2评论
https://www.luogu.com.cn/problem/P1115 贪心 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int inf=0x3f3f3f3f; cons ...
转载 2021-07-20 17:50:00
84阅读
2评论
给定一个数组,求最大的一:如: num = {-5,12,3,-8,2,-9} 最大的子为9 int sum = 0; for (int i = 0; i < N; i++) { if (sum + num[i] < 0) { sum = 0;//若sum小于0 那么之前的一就不要了 ...
原创 2021-08-27 14:29:34
81阅读
#include int a[]={-2,11,-4,13,-5,-2}; int main() { int i; for(i=0;i0) b=b+a[i]; else b=a[i]; if(b>sum) sum=b; } return sum; }
转载 2018-06-10 14:32:00
58阅读
2评论
给定一个数组,求最大的一:如: num = {-5,12,3,-8,2,-9} 最大的子为9 int sum = 0; for (int i = 0; i < N; i++) { if (sum + num[i] < 0) { sum = 0;//若sum小于0 那么之前的一就不要了 ...
原创 2022-02-03 14:10:53
18阅读
转载来源:百度百科:最大子算法标签 递推,DP,最大子问题描述问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子最大值。当所给的整数均为负数时定义子为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n例如...
转载 2023-03-20 14:56:52
85阅读
最大子的动态规划算法我们在选择一个元素a[j]的时候,只有两种情况,将a[i]至a[j-1]加上,或者从a[j]以j为起点开始。我们用一个数组dp[i]表示以i为结束的最大子,对于每一个a[i],加上dp[i-1]成为子,或以a[i]开始成为新的起点。因为我们只需要记录dp值,所以复杂度是O(n)。这就是最大子的动态规划算法。我们甚至不需要dp数组,只需要定义一个dp变量,因...
最大子:给出一个数组,计算其中连续的最大的子运行代码,及运行思想:/** * 动态规划:计算最大子 * 算法描述: * 数组a 有n个元素, 记 s[i] 为从a【0】到a[i]中,包含a[i]的最大子 * 则: s[i] 的值为: s[i-1]>0时, s[i-1]+a[i] * 否则 a[i] */#include <stdio.h>#include <stdlib.h>int maxSub(int *a, int n){ int i=0, max=0, max_pos = 0; int si_1=0, si = 0;/...
转载 2012-10-17 14:56:00
51阅读
2评论
最大子的动态规划算法我们在选择一个元素a[j]的时候,只有两种情况,将a[i]至a[j
原创 2022-02-16 17:44:14
49阅读
问题 A: 最大子 时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 Geobiyye是一个喜欢思考问题的女孩子。 Geobiyye给了你一个序列,她想求出这个序列的最大子。 Geobiyye觉得这个问题太简单了,她将问题扩大了一倍。于是现在问题变成了:从这个序列中选出不相交的两个连续,要求它们的最大。 换句话说,对于给定的长度为n的序列ai,你需要给出
原创 2022-07-15 10:22:24
26阅读
Examples: { -100, 1, 2, 3, -20, -20, -20, 2, 2, 2, 2,-100 }; Answer: 8 { 1,2,3}; Answer: 6 { -1,-2,-3}; Answer: -1 Solution:O(n) Solution is to use dynamic programming. You can add numbers as you walk
转载 2013-03-07 22:07:00
50阅读
2评论
题目:Max Sum/** * 动态规划:计算最大子 * 算法描述: * 数组a 有n个元素, 记 s[i] 为从a[0]到a[i]中,包含a[i]的最大子 * 则: s[i] 的
原创 2023-05-31 23:52:50
63阅读
最大子
原创 2021-08-19 13:02:21
81阅读
一.基本概念 分治法的基本步骤: 1.分解问题(Divide):把原问题分解为若干个与原问题性质相类&#20284;的子问题; 2.求解字问题(Conquer):不断分解子问题并求解; 3.合并子问题的解(Combine). 分治法的运用条件: 1.原问题可以分解为若干与原问题的解; 2.子问题可以分解并可以求解; 3.子问题的解可以合并为原问题的解; 4.分解后的子问题
原创 2012-10-11 20:32:00
1123阅读
实验内容:(1) a[1:n]的最大子与a[1:n/2]的最大子相同(2) a[1:n]的最大子与a[n/2+1:n]的最大子相同(3) a[1:n]的最大子为a[i]+…+a[j],并且1<=i<=n/2,n/2+1<=j<=n。#include <stdio.h>#include <stdlib.h>/** * ...
原创 2022-04-13 09:37:57
355阅读
  • 1
  • 2
  • 3
  • 4
  • 5