p39最大子数组问题o(lgn)
/** max.c** Created on: Feb 4, 2016* Author: wing*/
/** test.c** Created on: 2016年1月21日* Author: wing*/
#include<stdio.h>
#include<stdlib.h>
int smax(int *num,int l,int r,int *maxi,int *maxj)
{int maxl=0,maxr=0,i,j,m=(l+r)/2,tmp;tmp=0;for (j=m;j<=r;j++){tmp+=num[j];if (maxr<tmp){maxr=tmp;*maxj=j;}}tmp=0;for (i=m;i>=l;i--){tmp+=num[i];if (maxl<tmp){maxl=tmp;*maxi=i;}}return maxl+maxr-num[m];
}
int max(int a,int b)
{return a>b?a:b;
}
int find(int *num,int l,int r)
{int *maxi,*maxj,maxl,maxr,maxm;if (l==r)return num[l];maxi=(int *)malloc(sizeof(int));maxj=(int *)malloc(sizeof(int));maxl=find(num,l,(l+r)/2);maxr=find(num,(l+r)/2+1,r);maxm=smax(num,l,r,maxi,maxj);return max(max(maxl,maxr),maxm);
}
int main(void)
{int *num,i,n;scanf("%d",&n);num=(int *)malloc(sizeof(int)*n);for (i=0;i<n;i++)scanf("%d",&num[i]);printf("%d",find(num,0,n-1));return 0;
}
不考虑输入数据的话复杂度是o(lgn)
该算法的思路是分治,最大的差要么在左边,要么在右边,要么是右边的最大值与左边的最小值之差,只是从递归下层要传到上层的东西多一些而已
p39最大子数组问题o(lgn)相关推荐
- 求二维数组最大子数组
结对队友:胡康臻.杨寒寒 1.设计思想: 首先定义产生二维数组,定义可输入二维数组行和列,各位数随机产生: 然后进行最大子数组的求和比较,从每行的第一个数为子数组的起点开始进行不同的子数组遍历比较,只 ...
- 求二维数组中最大子数组的和
任国庆 张博 之前我们讨论了在一维数组中求最大子数组的和,在此基础上我们开始讨论二维数组的最大子数组. 求二维数组的最大子数组思想是建立在以为数组.首先将数组的第一列看成一个一维数组,找到该列的最大 ...
- OI基础系列之最大子数组问题
OI基础系列之最大子数组问题 --Edward2414 oi退役了,虽然没取得多少成绩,也算是走过一会的人了.我相信绝大多数oi党都是自学成才,在此,我感谢那些把自己所学写到博客里的前辈们, ...
- [LeetCode] Maximum Subarray 最大子数组
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- 首尾相连的一位数组最大子数组和
题目:在原有的一位数组上进行扩展,求首尾相连的最大子数组的和: 要求: 输入一个一维整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和 ...
- 求数组的最大子数组和最大子数组的和
输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 例如输入的数组为1, -2, 3, 1 ...
- 《LeetCode力扣练习》第53题 最大子数组和 Java
<LeetCode力扣练习>第53题 最大子数组和 Java 一.资源 题目: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. ...
- 分治法解决最大子数组问题
分治法解决最大子数组问题 参考文章: (1)分治法解决最大子数组问题 (2)https://www.cnblogs.com/Christal-R/p/Christal_R.html (3)https: ...
- nyoj983 首尾相连数组的最大子数组和
首尾相连数组的最大子数组和 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是 ...
- 编程之美2.15 二维数组最大子数组的和(数组下标从(1,1)开始)
首先,我们看到这篇文章的题目,我们就会想到之前的那个题目 -- 连续子数组最大和问题.这个问题无疑就是把原问题扩展到二维的情况. 想起来这个问题也不是很难,我们可以求解一维矩阵 ...
最新文章
- vtk相机_C#开发PACS医学影像三维重建(一)使用VTK重建3D影像
- layoutSubviews何时被调用
- Hibernate4一对多关系映射
- linux 简介与安装(虚拟机安装)
- opencv图像处理(二)
- 历经32载,域名仍是少年,更何况不足2岁的.xin?
- res_config_mysql和chan_sip模块的加载分析
- php程序转net,asp,asp.net,php,jsp下的301转向代码,整站重定向
- 从编写到上线带你搞定springboot博客01
- Memcached:高性能分布式对象缓存系统
- 【游戏】基于 matlab GUI lanchester作战模拟设计【含Matlab源码 426期】
- SOA概念的三个比喻
- 常用的Linux命令
- 数字图像处理(冈萨雷斯版)期末总复习
- El Capitan/Serial on the Intel Skylake NUC
- 新概念英语第二册课文电子版_新概念英语第二册:课文+音频+教学视频合集(可下载)...
- 柯桥托业TOEIC考试和PETS哪个含金量高?
- WordPress主题制作全过程(八):制作index.php
- 青出于蓝胜于蓝 dfs+树状数组
- 关于A 星算法的研究与简单分析及其实现-A star