任务:输入一个二维整形数组,数组里有正数也有负数。 求所有子数组的和的最大值。要求时间复杂度为O(n)。1.设计思想:因为用之前的解决子数组最大和的问题的思路一直没能解决这个问题,后来看到同学使用将矩阵转化为图的思路将结果得出了,所以我就沿着这个思路一步一步的分析了一下。开始先将将二维矩阵转换成图的...
分类:
编程语言 时间:
2015-06-12 00:56:30
阅读次数:
120
本章简述通过前面第二章节的叙述,描述了算法设计对程序员的日常影响:算法上的灵机一动可以使程序更加简单。但是本章内容将会发现算法设计的一个不那么常见但更富于戏剧性的贡献:复杂深奥的算法有时可以极大地提高程序性能。问题及简单算法本章引入的问题来自一维的模式识别,问题的输入是具有n个浮点数的向量x,输出是输入向量的任何连续子向量中的最大和。
例如,如果输入向量包含以下 N = 10 个元素:
arr[...
分类:
编程语言 时间:
2015-06-11 13:01:48
阅读次数:
158
题意:输入一个二维数组,求和最大的子矩阵
分析:一看到和最大的子XX,我就联想到和最大子序列,只不过那是一维这是二维,所以做法都差不多。把二维压缩成一维:你想啊一个矩阵的和不是可以先垂直方向相加把所有行压缩为一行然后这一行相加嘛。压缩过后找最大和的方法跟一维一模一样。但我自己做的时候写了四个循环,唉.....数组可以存放之前求过的和,那么求以下一行为结尾的和的时候只要在原来的数组上加这一行的数就...
分类:
其他好文 时间:
2015-06-10 22:36:13
阅读次数:
158
题意给一个长度为n的数组(n<=15)。
从中选出至少两个数,要求满足:
①最大和最小的差不能少于x
②选出的所有数的和在l和r之间思路n太小了。sort一下,然后直接枚举最小和最大值,接着dfs中间剩下的即可,发现一个可行的就cnt++。
注意dfs中使用一个状态参数来说明是否考虑sum的检测,从而避免了used数组。代码#include
#include <algori...
分类:
其他好文 时间:
2015-06-05 10:16:44
阅读次数:
120
一道dp,其实我们只要求出第一个人的最大和.定义sum[i][j]表示区间i,j所有元素之和.dp[i][j]表示从面对区间i,j时先取所能得到的最大和. 状态转移方程: dp[i][j]=max(sum[i+1][j]+a[i]-dp[i+1][j],sum[i][j-1]+a[j]-dp[i][j-1]). 可以化简成: dp[i][j]=sum[i][j]-min(dp[i+1][j],dp[...
分类:
其他好文 时间:
2015-05-30 09:29:09
阅读次数:
89
题意:给出多个double数,去掉其最小的和最大的,再对余下的求均值。思路:再输入时将最大和最小去掉,顺便统计非最值的和,输出时除一下个数即可。 1 #include 2 using namespace std; 3 4 int main() 5 { 6 //freopen("input...
分类:
其他好文 时间:
2015-05-29 17:49:20
阅读次数:
125
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间杂度为O(n)。
此题思路比较简单,直接上代码,注意考虑无效的输入。
//全局变量,判断输入参数是否无效
bool g_InputInvalid=false;
int FindGreatestSumOfArray(int *data, int length)
{
if ...
分类:
编程语言 时间:
2015-05-27 21:10:55
阅读次数:
135
最优子矩阵是建立在数列连续最大和的基础上的。所谓最优子矩阵,就是指在一个n*m二维的矩阵中,确定一个小的矩阵,使这个小矩阵中所有元素的和最大。
思考一下最优子矩阵和连续最大和的异同:
1、 所求的和都具有连续性;
2、 连续最大和是一维问题,最优子矩阵是二维问题
另外,对于一个矩阵而言,如果我们将连续k行的元素纵向相加,并对相加后所得的数列求连续最大和,则此连续最大和就是一个行数为k的...
分类:
其他好文 时间:
2015-05-27 10:20:01
阅读次数:
91
问题描述
对于一个给定的长度为N的整数序列A,它的“子序列”的定义是:A中非空的一段连续的元素(整数)。你要完成的任务是,在所有可能的子序列中,找到一个子序列,该子序列中所有元素的和是最大的(跟其他所有子序列相比)。程序要求你输出这个最大值。
输入格式
输入文件的第一行包含一个整数N,第二行包含N个整数,表示A。
其中
1
-10000
输出格...
分类:
其他好文 时间:
2015-05-25 10:02:21
阅读次数:
95
原文网址:http://www.linuxidc.com/Linux/2010-05/26111.htm升级到Ubuntu10.04后最大的问题,是最小最大和关闭按钮,放到了左边。这叫Ubuntu的MAC化。这给操作带来了很大的不便。大部分的theme的窗口关闭按钮都放到左边去了。每次有窗口操作,不...
分类:
系统相关 时间:
2015-05-24 23:29:02
阅读次数:
214