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

1257: 【基础】马鞍数

题目描述

求一个n×m数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大的数。
如下: n=5 m=5
5 6 7 8 9
4 5 6 7 8
3 4 5 2 1
2 3 4 9 0
1 2 5 4 8
则1行1列上的数就是马鞍数。

输入

共n+1行,第一行: n m (n,m<10)

第2到n+1行:每行m个整数

输出

输出若干行:如果存在马鞍数,则输出所有马鞍数,每行一个,为行和列以及马鞍数,马鞍数按照读入的顺序输出,也就是说,如果有多组马鞍数,先读入的先输出。

如果不存在马鞍数,则输出'not exist'。

样例输入
9 8
9 8 7 6 5 4 3 2
8 8 9 9 9 9 9 9
3 7 7 6 5 4 2 1
8 8 3 2 1 7 3 2
7 5 3 2 9 1 3 2
6 3 2 1 9 3 1 3
8 2 1 3 5 8 9 1
1 3 2 1 3 5 6 8
9 3 1 2 3 4 5 8
样例输出
2 2 8

使用万能头文件和预编译宏的简化代码

#include <bits/stdc++.h>
#define N 100
#define M 100
using namespace std;int main() {int n, m;int mat[N][M], row_min[N], col_max[M];// 输入矩阵cin >> n >> m;for(int i=0; i<n; i++)for(int j=0; j<m; j++)cin >> mat[i][j];// 计算每行最小值for(int i=0; i<n; i++) {row_min[i] = INT_MAX;for(int j=0; j<m; j++)if(mat[i][j] < row_min[i])row_min[i] = mat[i][j];}// 计算每列最大值for(int j=0; j<m; j++) {col_max[j] = INT_MIN;for(int i=0; i<n; i++)if(mat[i][j] > col_max[j])col_max[j] = mat[i][j];}// 查找马鞍数bool found = false;for(int i=0; i<n; i++)for(int j=0; j<m; j++)if(mat[i][j] == row_min[i] && mat[i][j] == col_max[j]) {cout << i+1 << " " << j+1 << " " << mat[i][j] << endl;found = true;}if(!found) cout << "not exist" << endl;return 0;
}

优化说明:

  1. 全局数组定义

    • 使用全局数组a[sz][sz]存储矩阵

    • rmincmax也定义为全局数组

  2. 变量简化

    • 矩阵命名为a(简洁)

    • 行最小值数组命名为rmin(row min)

    • 列最大值数组命名为cmax(column max)

  3. 算法优化

    • 使用min()max()函数简化极值计算

    • 保持O(n×m)的时间复杂度

  4. 输出格式

    • 行号列号从1开始输出

    • 使用布尔标记exist判断是否存在解

注意事项:

  • 全局数组自动初始化为0

  • sz定义为100满足题目n,m<10的要求

  • 使用万能头文件<bits/stdc++.h>包含所有必要库

这个版本在保持算法效率的同时,代码更加简洁清晰,完全符合题目要求的约束条件。

http://www.xdnf.cn/news/294301.html

相关文章:

  • 力扣hot100 (除自身以外数组的乘积)
  • Pinia状态管理工具速成
  • 认识并理解什么是链路层Frame-Relay(帧中继)协议以及它的作用和影响
  • 【C/C++】无锁编程——compare_exchange_strong
  • 第二章 - 软件质量
  • S100平台调试RS485/RS232
  • Python Cookbook-7.2 使用 pickle 和 cPickle 模块序列化数据
  • 【Python】 `os.getenv()` vs. `os.environ.get()`:环境变量获取方式的本质差异解析
  • Milvus(14):更改 Collections 字段、Schema 设计实践
  • (42)VTK C++开发示例 ---渲染不同颜色的20面体
  • 基于 jQuery 实现复选框全选与选中项查询功能
  • 【AI论文】KeySync:一种在高分辨率下实现无泄漏唇形同步的稳健方法
  • 开元类双端互动组件部署实战全流程教程(第1部分:环境与搭建)
  • 【自然语言处理与大模型】LlamaIndex的数据连接器和对话引擎
  • TS 函数中的类型兼容性
  • 20250505下载VLC for Android
  • 集合-探索
  • 观察者模式
  • 论文答辩讲稿脚本分享(附我自己用的版本)
  • Model Context Protocol (MCP) 技术解析
  • Kotlin中 StateFlow 或 SharedFlow 或 LiveData的区别
  • **集合**实验**
  • 基于SpringBoot的漫画网站设计与实现
  • 迭代器模式(Iterator Pattern)
  • Numpy随机分布
  • Lesson 17 Always young
  • Multi Agents Collaboration OS:专属多智能体构建—基于业务场景流程构建专属多智能体
  • 数据库MySQL学习——day9(聚合函数与分组数据)
  • 2025系统架构师---论软件可靠性设计范文
  • c++代码_加密_解密