/** 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. 求二维数组最大子数组

    结对队友:胡康臻.杨寒寒 1.设计思想: 首先定义产生二维数组,定义可输入二维数组行和列,各位数随机产生: 然后进行最大子数组的求和比较,从每行的第一个数为子数组的起点开始进行不同的子数组遍历比较,只 ...

  2. 求二维数组中最大子数组的和

    任国庆  张博 之前我们讨论了在一维数组中求最大子数组的和,在此基础上我们开始讨论二维数组的最大子数组. 求二维数组的最大子数组思想是建立在以为数组.首先将数组的第一列看成一个一维数组,找到该列的最大 ...

  3. OI基础系列之最大子数组问题

    OI基础系列之最大子数组问题   --Edward2414    oi退役了,虽然没取得多少成绩,也算是走过一会的人了.我相信绝大多数oi党都是自学成才,在此,我感谢那些把自己所学写到博客里的前辈们, ...

  4. [LeetCode] Maximum Subarray 最大子数组

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  5. 首尾相连的一位数组最大子数组和

    题目:在原有的一位数组上进行扩展,求首尾相连的最大子数组的和: 要求: 输入一个一维整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和 ...

  6. 求数组的最大子数组和最大子数组的和

    输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 例如输入的数组为1, -2, 3, 1 ...

  7. 《LeetCode力扣练习》第53题 最大子数组和 Java

    <LeetCode力扣练习>第53题 最大子数组和 Java 一.资源 题目: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. ...

  8. 分治法解决最大子数组问题

    分治法解决最大子数组问题 参考文章: (1)分治法解决最大子数组问题 (2)https://www.cnblogs.com/Christal-R/p/Christal_R.html (3)https: ...

  9. nyoj983 首尾相连数组的最大子数组和

    首尾相连数组的最大子数组和 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是 ...

  10. 编程之美2.15 二维数组最大子数组的和(数组下标从(1,1)开始)

          首先,我们看到这篇文章的题目,我们就会想到之前的那个题目 -- 连续子数组最大和问题.这个问题无疑就是把原问题扩展到二维的情况.       想起来这个问题也不是很难,我们可以求解一维矩阵 ...

最新文章

  1. vtk相机_C#开发PACS医学影像三维重建(一)使用VTK重建3D影像
  2. layoutSubviews何时被调用
  3. Hibernate4一对多关系映射
  4. linux 简介与安装(虚拟机安装)
  5. opencv图像处理(二)
  6. 历经32载,域名仍是少年,更何况不足2岁的.xin?
  7. res_config_mysql和chan_sip模块的加载分析
  8. php程序转net,asp,asp.net,php,jsp下的301转向代码,整站重定向
  9. 从编写到上线带你搞定springboot博客01
  10. Memcached:高性能分布式对象缓存系统
  11. 【游戏】基于 matlab GUI lanchester作战模拟设计【含Matlab源码 426期】
  12. SOA概念的三个比喻
  13. 常用的Linux命令
  14. 数字图像处理(冈萨雷斯版)期末总复习
  15. El Capitan/Serial on the Intel Skylake NUC
  16. 新概念英语第二册课文电子版_新概念英语第二册:课文+音频+教学视频合集(可下载)...
  17. 柯桥托业TOEIC考试和PETS哪个含金量高?
  18. WordPress主题制作全过程(八):制作index.php
  19. 青出于蓝胜于蓝 dfs+树状数组
  20. 关于A 星算法的研究与简单分析及其实现-A star

热门文章

  1. CSDN的浏览器助手 —— 油猴脚本
  2. QT实例-数据库分页查询
  3. DES 加密解密方法
  4. 「ZigBee模块」串口通讯 -- 详解
  5. 什么是长连接和短连接
  6. 超好用的文件对比工具—— Beyond Compare
  7. 「深度」详解Uber自动驾驶汽车传感器系统,什么样的配置才能避免撞人事件!...
  8. [FOI2020]手链强化
  9. android系统同时使用wifi和4g上网
  10. Linux主机驱动与外设驱动分离思想 1