C++寻找鞍点

C++寻找鞍点

任务描述

找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列最小(也可能没有鞍点)。

测试输入:

1  2  3  4  5
6  7  8  9  10
11 12 13 14 15
16 17 18 19 20

预期输出:

a[0][4]=5

测试输入:

1 1 1 1 2
1 1 1 2 1
1 1 2 1 1

1 2 1 1 1

预期输出:

不存在鞍点!

源代码:

#include <stdio.h>
#include <iostream>
using namespace std;


int main()
{
    
    // 请在此添加代码
    /********** Begin *********/
	int i,j,k,isfind=0;
	int max,max_i,max_j,min;
    int a[4][5];
	for(i=0;i<4;i++){
		for(j=0;j<5;j++){
			cin>>a[i][j];
		}
	}
	//max=a[0][0];
	for(i=0;i<4;i++){
		//找到改行最大值
        max=a[i][0];
        max_i = i;
		max_j = 0;
		for(j=0;j<5;j++){
			if(a[i][j]>max){
				max = a[i][j];
				max_i = i;
				max_j = j;
			}
		}
		//找到该列最小值
		min = a[i][max_j];
		for(k=0;k<4;k++){
			if(a[k][max_j]<min){
				min = a[k][max_j];
			}
		}
		if(max==min){
            isfind=1;
            printf("a[%d][%d]=%d",max_i,max_j,max);
        }
	}
	if(isfind==0)printf("不存在鞍点!");
    
    /********** End **********/
    return 0;
}
原文地址:https://www.cnblogs.com/lightice/p/12691716.html