当前位置: 首页 > ds >正文

week2-[二维数组]排队

week2-[二维数组]排队

题目描述

班上的同学排成了 NNNMMM 列的长方形队列,第 iii 行 第 jjj 列的同学身高为 Ai,jA_{i,j}Ai,j。班主任认为,如果一个长方形队列中,每一列同学都是按身高从低到高排列的,那么这样的长方形队列是美观的。现在班主任想要知道,同学们排成的长方形队列中,有多少列满足同学是按身高从低到高排列的(即这一列除第一行同学之外,每一位同学的身高都不低于该列前一行同学的身高)。

输入格式

读入包括 N+1N+1N+1 行。第一行包括 222 个整数 NNNMMM,表示同学们排成的长方形队列的行数和列数。接下来 NNN 行,每行包括 MMM 个整数,表示长方形队列中每一位同学的身高。

输出格式

输出一个整数,表示同学们排成的长方形队列中,有多少列满足同学是按身高从低到高排列的。

样例 #1

样例输入 #1

3 3
132 131 138
136 133 131
138 132 135

样例输出 #1

1

样例 #2

样例输入 #2

3 5
142 135 132 137 130
135 139 134 134 135
126 127 137 135 135

样例输出 #2

2

样例 #3

样例输入 #3

4 3
125 154 143
155 134 144
143 142 134
124 135 145

样例输出 #3

0

提示

样例解释1

111 列同学身高是从低到高排列的。

样例解释2

333 列和第 555 列同学身高是从低到高排列的。

样例解释3

没有一列同学身高是完全从低到高排列的。

数据范围

对于所有数据,3≤N,M≤20,110≤Ai,j≤1903 \le N,M \le 20, 110 \le A_{i,j} \le 1903N,M20,110Ai,j190

1. 阅读题目

题目给定一个 N×MN \times MN×M 的二维数组 AAA,表示 NNNMMM 列的同学身高。
要求:统计有多少列满足 从上到下身高不下降,即对于该列 jjj,从第 2 行开始都有 Ai,j≥Ai−1,jA_{i,j} \ge A_{i-1,j}Ai,jAi1,j

输入:

  • 第一行:N,MN, MN,M
  • 接下来 NNN 行:每行 MMM 个整数,表示身高

输出:

  • 一个整数,表示有多少列是“非递减”的。

数据范围:3≤N,M≤203 \le N,M \le 203N,M20110≤Ai,j≤190110 \le A_{i,j} \le 190110Ai,j190
范围很小,可以直接暴力遍历。


2. 分析问题

  • 对每一列 jjj1≤j≤M1 \le j \le M1jM):
    • 检查 i=2..Ni=2..Ni=2..N 时是否有 Ai,j≥Ai−1,jA_{i,j} \ge A_{i-1,j}Ai,jAi1,j
    • 如果整列都满足,则该列计数 +1。
  • 时间复杂度:
    • O(N×M)O(N \times M)O(N×M),在 20×20=40020 \times 20 = 40020×20=400 范围内,完全没问题。

边界情况:

  • 所有列严格下降 → 答案是 0
  • 所有列非递减 → 答案是 MMM
  • 有相等情况也算“从低到高”(因为题目是“不低于”)。

3. C++ 代码实现(兼容低版本)

我写一个 C++11 安全写法(避免 autovector 初始化列表、结构化绑定等),用 cin/cout 就能过。

#include <iostream>
using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(NULL);int N, M;cin >> N >> M;int A[25][25]; // 题目范围 N,M <= 20,开25足够for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {cin >> A[i][j];}}int ans = 0;// 遍历每一列for (int j = 0; j < M; j++) {bool ok = true;for (int i = 1; i < N; i++) {if (A[i][j] < A[i-1][j]) { // 不满足非递减ok = false;break;}}if (ok) ans++;}cout << ans << "\n";return 0;
}
http://www.xdnf.cn/news/18487.html

相关文章:

  • MySQL 50 道经典练习题及答案
  • Java毕业设计选题推荐 |基于SpringBoot+Vue的知识产权管理系统设计与实现
  • Effective C++ 条款52:写了placement new也要写placement delete
  • ES常用查询命令
  • SQL详细语法教程(七)核心优化
  • ubuntu系统上的conda虚拟环境导出方便下次安装
  • PiscCode使用MediaPipe Face Landmarker实现实时人脸特征点检测
  • YOLO11 到 C++ 落地全流程:ONNX 导出、NMS 判别与推理实战
  • Java 通过 m3u8 链接下载所有 ts 视频切片并合并转换为 mp4 格式
  • 《GPT-OSS 模型全解析:OpenAI 回归开源的 Mixture-of-Experts 之路》
  • 深入理解MySQL Ⅳ -- SQL性能分析工具
  • 文件操作NIO Files的简单使用
  • InfluxDB 查询性能优化实战(一)
  • SCAU学习笔记 - 自科三面前端方向实战演示
  • Disruptor核心接口EventHandler解析
  • 【Techlog】01入门-井筒数据整合软件的基本认识
  • C5.6:双电源发射极偏置、特殊类偏置、PNP型偏置电路
  • ODPS 十五周年实录 | 为 AI 而生的数据平台
  • 机器学习(Machine Learning, ML)
  • 项目1其二(验证码、jwt)
  • 《算法导论》第 33 章 - 计算几何学
  • 关于uniappx注意点1 - 鸿蒙app
  • 3ds Max 流体模拟终极指南:从创建到渲染,打造真实液体效果
  • 模拟tomcat接收GET、POST请求
  • 元宇宙的硬件设备:从 VR 头显到脑机接口
  • 【数据库】Oracle学习笔记整理之六:ORACLE体系结构 - 重做日志文件与归档日志文件(Redo Log Files Archive Logs)
  • Navicat Premium v17.2.3
  • Advanced Math Math Analysis |01 Limits, Continuous
  • 力扣hot100:最大子数组和的两种高效方法:前缀和与Kadane算法(53)
  • 学习设计模式《二十三》——桥接模式