寻找矩阵中的马鞍点

该博客讨论了如何在n*n矩阵中找到马鞍点,即某个元素既是其所在行的最小值,也是其所在列的最大值。通过存储每行最小元素的下标和计数,然后验证这些元素是否也是列的最大值来实现算法。
摘要由CSDN通过智能技术生成

原题:若在矩阵A[n*n]中存在一个元素a[i-1][j-1]满足a[i-1][j-1]是第 i 行元素中最小且又是第 j 列元素中的最大值,则称此元素为该矩阵的一个马鞍点.试设计一个求矩阵所有马鞍点的算法.
分析:用数组S[n]存储某一行(如第 i 行, i = 1--m)的元素值最小的元素的下标, c 表示此行的元素值等于最小的元素的个数(元素等于最小值的元素可能不止一个),对每个元素值最小的元素再验证是否是所在列的元素值最大的元素,如是则为马鞍点,将其输出.

#include<iostream>
#include<fstream>
#include<time.h>
#include<iomanip>//控制输出格式的头文件
#include<stdlib.h>
#define N 3//列数
#define M 3//行数
#define ElemType int
using namespace std;

ElemType CreateArray(ElemType array[M][N]);//函数原型声明
void SaddlePoint(ElemType array[M][N], int m, int n);//函数原型声明

int main()
{
	ElemType array[M][N];
	CreateArray(array);
	SaddlePoint(array, M, N);

	cout<<endl<<endl;
	return 1;
}

ElemType CreateArray(ElemType array[M][N])
{//生成一个数据元素随机生成的二维数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Storm-Shadow

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值