3.30

last最大子数组

package diyibufen;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;


public class fourbufen {
    
    public static int max(int a,int b) {
        return a>b?a:b;
    }
    
    public static void TurnToEnd() {
        System.out.println("ERROR!!!");
        System.exit(0);
    }
    
    public static void main(String[] args) throws IOException {
        int[][] a=new int[1010][1010],sum=new int[1010][1010];
        int n,m;
        BufferedReader br= new BufferedReader(new FileReader("E:/Java/diyibufen/input.txt"));
        String[] s=br.readLine().split(",");
        n=Integer.parseInt(s[0]);
        s=br.readLine().split(",");
        m=Integer.parseInt(s[0]);
        
        for(int i=1;i<=n;i++) {
            s=br.readLine().split(",");
            if(s.length!=m) {
                TurnToEnd();
            }
            for(int j=1;j<=m;j++) {
                if(s[j-1].length()<9) {
                    a[i][j]=Integer.parseInt(s[j-1]);
                }else {
                    TurnToEnd();
                }
            }
        }
        
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=m;j++) {
                sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
                if(sum[i][j]>1e9||sum[i][j]<-1e9) {
                    TurnToEnd();
                }
            }
        }
        
        int k=a[0][0];
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=m;j++) {
                for(int u=i;u<=n;u++) {
                    for(int v=j;v<=m;v++) {
                        k=max(k,sum[u][v]-sum[i-1][v]-sum[u][j-1]+sum[i-1][j-1]);
                        if(k>1e9||k<-1e9) {
                            TurnToEnd();
                        }
                    }
                }
            }
        }
        System.out.println(k);
        
    }
}

 

posted @ 2022-03-30 22:54  _Pi  阅读(94)  评论(0)    收藏  举报