package max_subarrayy;
import java.lang.Math;
public class max_subarrayy {
private static int[] array;
public static class mark{
private int lom = 100;
private int him;
private int value;
public mark(int a,int b,int c){
lom = a;him = b;value = c;
}
}
public static mark merge(int low,int high){ //return max line
int N = high + low ; // should plus when to get the mid number *high-low,high
double mid = (double)N/2;
if(low == high){return new mark(low,high,array[low]);}
mark leftmax = merge(low,(int)Math.floor(mid));
mark rightmax = merge((int)Math.floor(mid)+1,high);//even number error *Math ceil
mark midmax = findmidmax(low,high,(int)Math.floor((float)N/2));
int k = (Math.max(leftmax.value, rightmax.value) > midmax.value) ? Math.max(leftmax.value, rightmax.value) : midmax.value;
if(k == leftmax.value){return leftmax;}
else if(k == rightmax.value){return rightmax;}
else{return midmax;}

}
public static mark findmidmax(int low,int high,int mid){
int max = array[mid] + array[mid + 1];
int temp = max;
int lom = mid;
int him = mid +1;
for(int i = mid -1;i >= low;i--){
temp = temp + array[i];
if(temp > max){
max = temp;
lom = i;
}
}
temp = max;
for(int i = mid +2;i <= high;i++){// plus 2 *mid +1
temp = temp + array[i];
if(temp > max){
max = temp;
him = i;
}
}
return new mark(lom,him,max);
}

public static void main(String[] args){
int N = args.length;
array = new int[N];
for(int i = 0;i < N;i++){
array[i] = Integer.parseInt(args[i]);
}
mark a = merge(0,N-1);
System.out.println(a.lom + " " + a.him +" " + a.value);
}

}

最新文章

  1. 从零开始学Python第六周:面向对象基础(需修改)
  2. StackExchange.Redis 访问封装类
  3. 解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题
  4. Android学习笔记——button_activity
  5. 初学Ajax(一)
  6. HDU 3974 Assign the task (DFS序 + 线段树)
  7. 【C语言】01-函数
  8. bootstrap小结
  9. 【国家集训队2010】小Z的袜子[莫队算法]
  10. Django 学习第十一天——中间键和上下文处理器
  11. HDU 1019(求最小公倍数 **)
  12. MySQL查看 InnoDB表中每个索引的高度
  13. nodeclub route
  14. C#读取“我的文档”等特殊系统路径及环境变量
  15. 微信授权获取code(微信支付)
  16. EF框架CodeFirst the model backing the &#39;PModelEntities&#39; context has changed since the database was created. Consider using Code First Migrations to update the database
  17. LintCode 402: Continuous Subarray Sum
  18. [Python爬虫] 之三:Selenium 调用IEDriverServer 抓取数据
  19. BZOJ2763: [JLOI2011]飞行路线(分层图 最短路)
  20. 讲一个关于RSA加密算法的故事

热门文章

  1. Windows自动登录设置 Windows免密登录
  2. tomcat8 tomcat-users相关配置
  3. 【PowerDesigner】【2】将工具栏显示出来
  4. 借助python工具从word文件中抽取相关表的定义,最后组装建表语句-非常好
  5. call、apply、bind三者的区别
  6. [CodeForces - 614E] E - Necklace
  7. git status 查看当前修改文件
  8. 五、持久层框架(Hibernate)
  9. post和get的使用场景和区别
  10. js 实现class作为选择器