求解二维数组中的鞍点问题:

鞍点:在行中最大,列中最小的数字

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

代码实现

#include<stdio.h>
const int M=3;   //数组的行数
const int N=3; 	  //数组的列数
void saddlePoint(int mat[][M],int m,int n,int *maxRow,int *maxCol); //求解鞍点
void saddlePoint(int mat[][M],int m,int n,int *maxRow,int *maxCol){
	int i,j;
	int maxValue;
	int minValue;
	*maxRow=0;*maxCol=0; 
	for(i=0;i<m;i++){
		maxValue=mat[i][0];
		for(j=1;j<n;j++){
			if(maxValue<mat[i][j]){
				maxValue=mat[i][j];
				*maxRow=i;
				*maxCol=j;
			}
		}
		minValue=mat[0][*maxCol];
		int minRow=0;
		for(j=1;j<m;j++){
			if(minValue>mat[j][*maxCol]){
				minValue=mat[j][*maxCol];
				minRow=j;
			}
		}
		if(minRow==(*maxRow)){ //判断列中的最小数是否等于行最大数
			return;
		}
	}
}
int main(){
	int arr[M][N]={{4,5,9},{2,3,8},{6,7,10}};
	int maxR,maxC;
	saddlePoint(arr,M,N,&maxR,&maxC);
	printf("%d",arr[maxR][maxC]); 
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值