1 条题解

  • 0
    @ 2025-9-6 13:38:22

    C++ :

    #include <iostream>
    #include <vector>
    using namespace std;
     
    int main() {
        int n, m;
        cin >> n >> m;
        vector<vector<int>> matrix(n, vector<int>(m));
        
        // 读取输入并转换为数字矩阵(关键步骤1)
        for (int i = 0; i < n; i++) {
            string s;
            cin >> s;
            for (int j = 0; j < m; j++) {
                matrix[i][j] = s[j] - '0'; // 字符转数字
            }
        }
     
        int ans = 0;
        // 四重循环枚举所有矩形(关键步骤2)
        for (int i1 = 0; i1 < n; i1++) {
            for (int j1 = 0; j1 < m; j1++) {
                for (int i2 = i1; i2 < n; i2++) {    // 右下角行号>=左上角
                    for (int j2 = j1; j2 < m; j2++) { // 右下角列号>=左上角
                        int cnt = 0;
                        // 统计矩形内1的数量(关键步骤3)
                        for (int x = i1; x <= i2; x++) {
                            for (int y = j1; y <= j2; y++) {
                                cnt += matrix[x][y];
                            }
                        }
                        // 判断平衡条件(关键步骤4)
                        int area = (i2-i1+1)*(j2-j1+1);
                        if (cnt*2 == area) { // 1的数量等于总格子数的一半
                            ans = max(ans, area);
                        }
                    }
                }
            }
        }
        cout << ans;
        return 0;
    }
    

    信息

    ID
    5529
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者