寒假每日一题打卡day22——ACWing126. 最大的和

【题目描述】

import java.util.Scanner;
class Main{
          
   
    static int N = 110;
    public static void main(String args[]){
          
   
        Scanner reader = new Scanner(System.in);
        int n = reader.nextInt();
        int[][] f = new int[N][N];
        for(int i = 1; i <= n; i++) 
            for(int j = 1; j <= n; j++) {
          
   
                //同一列的前缀和
                f[i][j] = reader.nextInt();
                f[i][j] += f[i - 1][j];
            }
        int ans = Integer.MIN_VALUE;
        
        for(int i = 1; i <= n; i ++){
          
   //枚举上边界
            for(int j = i; j <= n; j++){
          
   //枚举下边界
                
                int last = 0;
                for(int k = 1; k <=n; k ++){
          
   
                    last = Math.max(last,0) + f[j][k] - f[i - 1][k];
                    ans = Math.max(ans,last);
                    
                }
                
            }
        }
        System.out.println(ans);
        
    }
}
经验分享 程序员 微信小程序 职场和发展