P1837 切出最好吃的蛋糕

复制代码
#include <iostream>
#include <cstring>
using namespace std;

const int N = 110;

int n;
int s[N][N];  // 二维前缀和数组

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            int x;
            cin >> x;
            s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + x;
        }
    }
    int ans = -1e9;
    for (int i = 1; i <= n; i++) {  // 枚举矩形左上角的位置
        for (int j = 1; j <= n; j++) {
            for (int k = i; k <= n; k++) {  // 枚举矩形右下角的位置
                for (int l = j; l <= n; l++) {
                    int sum = s[k][l] - s[k][j - 1] - s[i - 1][l] + s[i - 1][j - 1];  // 子矩形的和
                    ans = max(ans, sum);  // 更新最大值
                }
            }
        }
    }
    cout << ans << endl;
    return 0;
}
复制代码

 

posted @   刘海烽  阅读(146)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示