[数据结构_2]Saddle_Point_pro(马鞍点_改进版)

这是一个C语言程序,用于查找二维数组中的马鞍点,即行中的最小值与列中的最大值相等的元素。程序首先计算每行的最小值和每列的最大值,然后比较找出马鞍点。如果找到马鞍点,则打印出来;否则,提示没有鞍点。算法的时间复杂度为O(3*M*N),空间复杂度为O(M+N)。
摘要由CSDN通过智能技术生成
//Saddle_Point_pro.cpp
#include <stdio.h>
#define M 4
#define N 4
void MinMax(int A[M][N])
{ int i,j;
bool have=false;
int min[M],max[N];
for (i=0;i<M;i++)//计算出每行的最小值元素,放入min[0..M-1]之中
{
min[i]=A[i][0];
for (j=1;j<N;j++)
if (A[i][j]<min[i])
min[i]=A[i][j];
}
for (j=0;j<N;j++)//计算出每列的最大值元素,放入max[0..N-1]之中
{ max[j]=A[0][j];
for (i=1;i<M;i++)
if (A[i][j]>max[j]) 
max[j]=A[i][j];
}
for (i=0;i<M;i++)//判定是否为马鞍点
for (j=0;j<N;j++)
if (min[i]==max[j])
{ printf("  A[%d][%d]=%d\n",i,j,A[i][j]);//显示马鞍点
have=true;
}
if (!have)
printf("没有鞍点\n");
}
void main()
{ int i,j;
int A[M][N]={
  {9, 7, 6, 8},{20,26,22,25},{28,36,25,30},{12,4, 2, 6}};
printf("A矩阵:\n");
for (i=0;i<M;i++)
{ for (j=0;j<N;j++)
printf("%4d",A[i][
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值