. 计算鞍点
描述
在二维数组中,有这样一类点。这类点的数值是本行的最大值、本列的最小值。这类点被成为鞍点(鞍点在很多学科上都有重要的意义,而且鞍点的命名很形象,大家可以想一想马鞍上最中央的点,就是类似这样的一个点)。给出一个n x n的二维数组,从第一行开始寻找鞍点,输出所有找到的鞍点的值。输入数据多行,第一行为二维数组的大小n,第二行开始为二维数组的元素值。
输入
输入数据多行,第一行为二维数组的大小n,第二行开始为二维数组的元素值。
输出
输出所有找到的鞍点的值
样例
输入
复制
3 1 3 1 1 2 1 1 3 1
输出
复制
2
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n][n]={},max[n]={},min[n]={};
for(int row=0;row<n;row++){
for(int col=0;col<n;col++){
cin>>a[row][col];
}
}
for(int i=0;i<n;i++){
max[i]=a[i][0];
for(int j=1;j<n;j++){
if(a[i][j]>max[i]){
max[i]=a[i][j];
}
}
}
for(int i=0;i<n;i++){
min[i]=a[0][i];
for(int row=1;row<n;row++){
if(a[row][i]<min[i]){
min[i]=a[row][i];
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(max[i]==min[j]){
cout<<a[i][j]<<" ";
}
}
}
return 0;
}