求解马鞍点问题

该博客介绍了一种算法,用于高效求解矩阵中的马鞍点,即既是所在行最小值又是所在列最大值的元素。文章提供了输入输出格式、样例及相应的C语言代码实现。
摘要由CSDN通过智能技术生成

题目描述

若矩阵An*m中某个元素A[i][j]是矩阵第i行中值最小的元素,同时又是第j列中值最大的元素,则称元素A[i][j]是矩阵中的一个马鞍点。设以二维数组存储矩阵,编写算法求矩阵A中的所有马鞍点,算法的时间复杂度要尽量的低。
注意当最大值(最小值)并列相等时,会出现多鞍点的情况。

输入

第一行输入矩阵的总行数M和总列数N,以空格间隔。
之后的M行,依次输入矩阵的各行数据,以空格间隔。

输出

若有马鞍点,则以行序为主序,依次输出各个马鞍点。每个马鞍点以(row,col,val)的形式输出,其中row 代表马鞍点的行号,col代表马鞍点的列号,val代表马鞍点的值。若无马鞍点,则输出“NONE”。

样例输入

4 6
45 67 87 34 56 26
93 75 85 75 92 75
94 85 96 75 78 75
23 17 75 28 98 61

样例输出

(2,4,75)(2,6,75)(3,4,75)(3,6,75)

代码

#include<stdio.h>
#include<stdlib.h>
 
 
int main()
{
   
    int m = 0;
    int n = 0;
 
    int i = 0;
    int j = 0;
 
    int flag = 0;
    int num = 0;
 
    int* min = (int *)malloc(n * sizeof(int));
    int* max = (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值