public class A
{
public static int g(int[] a, int p, int q)
{
if(q-p==1){
if(a[p]>0) return a[p];
return 0;
}
int mid = (p+q)/2;
int max = 0;
int m1 = g(a,p,mid);
if(m1>max) max = m1;
int m2 = g(a,mid,q);
if(m2>max) max = m2;
int m3a=0;
int sum = 0;
for(int i=mid; i>=p; i--){
sum += a[i];
if(sum>m3a) m3a = sum;
}
int m3b=0;
sum = 0;
for(int i=mid+1; i<q; i++){
sum += a[i];
if(sum>m3b) m3b = sum;
}
int m3 = m3a + m3b;
if(m3>max) max = m3;
return max;
}
public static int f(int[] a)
{
int max = 0;
for(int i=0; i<a.length; i++)
for(int j=i+1; j<a.length+1; j++){
int sum = 0;
for(int k=i; k<j; k++) sum += a[k];
if(sum > max) max = sum;
}
return max;
}
public static void main(String[] args)
{
final int N = 2000;
int[] a = new int[N];
for(int i=0; i<a.length; i++){
a[i] = (int)(Math.random() * 100) - 50;
}
System.out.println(f(a));
System.out.println("-----------------------");
System.out.println(g(a,0,a.length));
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步