跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

CCF-GESP 2025 年 9 月四级 C++ 真题解析:排兵布阵

CCF-GESP 2025 年 9 月四级 C++ 考试题目“排兵布阵”。问题要求在 n*m 的网格中找出全为 1 的最大矩形区域面积。输入为网格数据,输出最大网格数。由于数据规模较小(n,m≤12),采用暴力枚举所有子矩形的方法即可求解。代码实现了遍历左上角和右下角坐标并检查合法性的逻辑。

CodeArtist发布于 2026/3/23更新于 2026/9/1028K 浏览

题目描述

作为将军,你自然需要合理地排兵布阵。地图可以视为 n 行 m 列的网格,适合排兵的网格以 1 标注,不适合排兵的网格以 0 标注。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格?

输入格式

第一行,两个正整数 n,m,分别表示地图网格的行数与列数。

接下来 n 行,每行 m 个整数 ai,1,ai,2,…,ai,m,表示各行中的网格是否适合排兵。

输出格式

一行,一个整数,表示适合排兵的矩形区域包含的最大网格数。

输入输出样例 #1

输入 #1
4 3 0 1 1 1 0 1 0 1 1 1 1 1 
输出 #1
4 

输入输出样例 #2

输入 #2
3 5 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 
输出 #2
3 

说明/提示

对于所有测试点,保证 1≤n,m≤12,0≤ai,j≤1。

解析

暴力枚举法,详见代码:

#include <bits/stdc++.h>
using namespace std;

int m, n;
int a[105][105];
int ans = 0;

// 计算 bx(开始行),by(开始列),ex(结束行),ey(结束列)
// 范围是否都可以排兵
bool f(int bx, int by, int ex, int ey) {
    for (int i = bx; i <= ex; i++) {
        for (int j = by; j <= ey; j++) {
            if (a[i][j] == 0) {
                return 0;
            }
        }
    }
    return 1;
}

int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            cin >> a[i][j];
        }
    }
    for (int i = 1; i <= n; i++) {
        // 枚举矩形左上角行
        for (int j = 1; j <= m; j++) {
            // 枚举矩形左上角列
            for (int k = i; k <= n; k++) {
                // 枚举矩形右下角行
                for (int l = j; l <= m; l++) {
                    // 枚举矩形右下角列
                    if (f(i, j, k, l)) {
                        // 若符合条件
                        ans = max(ans, (k - i + 1) * (l - j + 1));
                        // 求面积的最大值
                    }
                }
            }
        }
    }
    cout << ans;
    return 0;
}

目录

  1. 题目描述
  2. 输入格式
  3. 输出格式
  4. 输入输出样例 #1
  5. 输入 #1
  6. 输出 #1
  7. 输入输出样例 #2
  8. 输入 #2
  9. 输出 #2
  10. 说明/提示
  11. 解析

更多推荐文章

查看全部
  • Python Pandas DataFrame 常用方法精讲
  • LazyLLM 多 Agent 实践:豆包模型源码部署与 Web 调试指南
  • Flutter 三方库 ethereum_addresses 在鸿蒙系统的适配与使用指南
  • 手把手教你:在 Windows 部署 OpenAkita 并接入飞书模块,实现真正能干活的本地 AI 助手
  • 从原理到实践:AIGC与ASR/TTS技术在智能语音交互中的融合应用
  • Claude Code Viewer: Web 端会话管理工具
  • 支持国内股票分析的 AI 开源项目 GitHub 精选
  • 基于大疆 MSDK 实现的无人机视觉引导自适应降落功能
  • 云服务器部署 ComfyUI+SVD 生成 AI 视频实战指南
  • Python 爬虫实战:抓取网易云音乐热歌榜
  • GitHub Copilot Pro 学生免费权益获取与 VS Code 配置指南
  • 大疆 MSDK 无人机视觉引导自适应降落方案
  • 人工智能:自然语言处理在法律领域的应用与实战
  • 弗洛伊德 - 沃舍尔算法 (Floyd-Warshall Algorithm)
  • GitHub Copilot 提升 AI 原生应用开发效率的 5 种方法
  • AI 生成前端 UI 的三步优化与风格控制技巧
  • Google A2UI 前端可操作性技术入门
  • Web前端基础入门:HTML、CSS与JavaScript核心知识
  • 2024 年中国大模型行业应用案例白皮书概览
  • Visual Studio 2026中Github Copilot的大模型

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online