ACWing126 最大的和
Last updated
Last updated
4
0 -2 -7 0 9 2 -6 2
-4 1 -4 1 -1
8 0 -215package Enum;
import java.io.*;
import static java.lang.Math.max;
public class MaxSubSum {
static int Sum[][];
static int N;
static PrintWriter out;
static StreamTokenizer in;
public static void getMaxSubSum() {
//1.初始化结果
int result = -9999;
int temp;
//2.循环进行动态规划
for (int i = 1; i <= N; i++){//下边界
for(int j=1;j<=i;j++){ //上边界
temp=0;
for(int k=1;k<=N;k++){//对每个“一维”数组进行动态规划
temp=max(temp,0)+Sum[i][k]-Sum[j-1][k];
result=max(result,temp);
}
}
}
//3.输出结果
out.println(result);
}
public static void main(String[] args) throws IOException {
//0.初始化
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//1.获取输入
in.nextToken();
N=(int)in.nval;
Sum=new int[N+1][N+1];
for(int i=1;i<=N;i++) Sum[0][i]=0;
for(int i = 1;i<=N;i++){
for(int j=1;j<=N;j++)
{
in.nextToken();
Sum[i][j]=(int)in.nval;
Sum[i][j]+=Sum[i-1][j];
}
}
//2.调用函数
getMaxSubSum();
//3.flush
out.flush();
}
}