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); } }
浙公网安备 33010602011771号