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

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.dtcms.com/a/341771.html

相关文章:

  • MySQL/Kafka数据集成同步,增量同步及全量同步
  • Windows 如何清理右键菜单?电脑桌面右键菜单里出现一个清理内存 怎么去掉?
  • 数据结构中邻接矩阵中的无向图和有向图
  • 流固耦合|01流固耦合分类
  • 面试 TOP101 二分查找/排序专题题解汇总Java版(BM17 —— BM22)
  • Alpha测试:软件上线前的关键环节
  • 意象框架:连接感知与认知的统一信息结构分析——基于上古汉语同源词意义系统的词源学与认知语言学探索
  • 深入理解与应用向量嵌入(Vector Embeddings):原理、实现与多场景实践
  • 轻量级流程编排框架,Solon Flow v3.5.0 发布
  • WEB安全篇:浏览器攻击原理及防护
  • 软件设计师——数据结构与算法基础学习笔记
  • mac安装Trae并解决App Unavailable问题
  • 【Java进阶】Java JIT 编译器深度解析与优化实践
  • 49.Seata-XA模式
  • Day57 Java面向对象12 多态
  • 齐次线性方程组最小二乘解
  • 压缩包密码找回工具递归解压增强版使用说明
  • 机器学习数据预处理学习报告
  • Linux用30秒部署Nginx+Tomcat+Mysql+Jdk1.8环境
  • Paging in Operating System
  • windows server 彻底卸载oracle 11g
  • Linux命令大全-ps命令
  • AdaCoT:基于强化学习的帕累托最优自适应思维链触发机制
  • 自动泊车辅助系统的漏洞、威胁与风险分析
  • MDP(马尔可夫决策过程)与 RL(强化学习)
  • 半导体开关器件深度解析:PNP、NPN、PMOS、NMOS
  • 使用PCL读取PCD点云文件
  • MTK Linux DRM分析(一)- DRM简介
  • 基于STM32的感应开关盖垃圾桶
  • 基于Pytochvideo训练自己的的视频分类模型