题目:输入一个整型数组,数组里有正数和负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。实现:boolg_InvalidInput=false;
intFindGreatestSumOfSubArray(int*pData,intnLength)
{
if((pData==NULL)||(nLength<=0))
{
..
分类:
编程语言 时间:
2014-12-04 18:18:50
阅读次数:
229
这是LeetCode上的一道题目,需要求二叉树中两点路径的最大和。原题是https://oj.leetcode.com/problems/binary-tree-maximum-path-sum/Given a binary tree, find the maximum path sum.The p...
分类:
其他好文 时间:
2014-12-03 23:05:58
阅读次数:
226
最大连续和的定义:给出一个长度为n的序列A1,A2,...,An,求最大连续和,即找要求找到1
方法一,根据定义容易想到:
int maxSubSeqSum(int A[],int N)
{
int maxSum=A[0];
int i,j,k;
for(i=2;i<N;i++)
for(j=i;j<N;j++)...
分类:
其他好文 时间:
2014-12-03 21:27:49
阅读次数:
142
题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数...
分类:
编程语言 时间:
2014-11-29 23:01:37
阅读次数:
283
数字三角形:定义状态(i,j):表示当前所处位置定义指标函数 d(i,j) :表示从格子(i,j)出发能得到的最大和找到状态转移方程: d(i,j)=a(i,j)+max{d(i+1,j),d(i+1,j+1)}总状态为O(n^2),每个状态决策为O(1),总的时间复杂度为O(n^2)。方法:直接递...
分类:
其他好文 时间:
2014-11-28 22:37:23
阅读次数:
295
最大和
时间限制:1000 ms | 内存限制:65535 KB
难度:5
描述
给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。
例子:
0 -2 -7 0
9
2 -6 2
-4
1 -4 1
-1 8 0 -2
其最大子矩阵为:
9
...
分类:
其他好文 时间:
2014-11-27 12:43:24
阅读次数:
160
题目大意:给你一个N,接下来是N*N的矩阵。数有正有负,求最大的子矩阵
和。
思路:1003题是一维的求连续子序列最大和,dp[i] = max(dp[i-1]+a[i],a[i])
这道题是求二维的子矩阵最大和。考虑将二维转化为一维的。二维数组的每一
行都可以看做一个一维数组。map[i][j]数组上存的是第i行前j列上的和
第k行上,dp[k][i] = max(dp[k][i-1]+map[k][i],map[k][i]),但是这样只能知道
第k行前i个数的最大和是多少,而不知道是第k行上从第几列到第...
分类:
其他好文 时间:
2014-11-26 16:30:23
阅读次数:
272
题目大意:给定n个数,多次询问选择k个数使和为奇数的最大和
首先将所有数排序
对于每个询问,如果最大的k个数之和是奇数,那么答案显然是这k个数的和
如果最大的k个数之和是偶数,那么我可以将后k个数中最小的偶数换成前n-k个数中最大的奇数,或者将后k个数中最小的奇数换成前n-k个数中最大的偶数
二者取最优即可 无法如此做则输出-1
#include
#include
#include ...
分类:
其他好文 时间:
2014-11-25 18:42:11
阅读次数:
208
题意:
原题意比较啰嗦,大概的意思就是输入n个整数,然后将他们分成m段,要求求出这m段中最大和最小时候的情况。输出的时候段与段之间用"/"分离,当有多个解时,输出第一段值最小的,第一段相同时输出第二段值最小的解,以此类推。
思路:
一看到最大值最小,我就想到了二分,可以采取二分试探这个最大值,然后看是否能在这个最大值下能否分成m段,然后我们记录下二分过程中得到的那个满足要求...
分类:
其他好文 时间:
2014-11-22 00:51:09
阅读次数:
152
1.背景 最大序列和问题一直以来是一个比较经典的算法题,看到这个问题,有很多解题的办法。今天看到了一种时间复杂度只为O(n)的解题算法,在这里记录下。 思路很简单,比方说有P1,P2,P3,P4.....这样一个序列,我们从P1开始求和,比如说在P5时求和数小于零,就可以断定。第一种情况,最大序列在P1~P5之间,或者说在P6~Pn之间。因为如果P1...
分类:
编程语言 时间:
2014-11-21 20:34:45
阅读次数:
253