【问题描述】输入一个4×4的矩阵中的所有元素,设其最多只有一个鞍点,寻找该鞍点,如果有,则输出其下标及对应的值,若没有,则输出"NO"。鞍点是指二维数组中的一个元素,在该行上最大,在该列上最小。
【输入形式】输入16个整数,存放在一个4×4的二维数组中
【输出形式】若有鞍点,则输出其下标(两个整数)和对应的值,若无鞍点,则输出"NO"。
【样例输入】
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
【样例输出】
[2][1] 6
【样例说明】
【评分标准】
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a[4][4],flag=1,i,j;
//输入二维数组
for(i=0;i<4;i++)
for(j=0;j<4;j++)
cin >> a[i][j];
//一行一行的找每行的最大值
for(i=0;i<4;i++)
{
int max = a[i][0],idx;
for(int j=1;j<4;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
idx=j;
}
}
//判断这一行的最大值是否为这一列的最大值
int k = 0;
for(k=0;k<4;k++)
{
if(max>a[k][idx]) break;
}
//如果是,找到鞍点并输出
if(k>=4)
{
printf("*%d*%d*%d",i,idx,max);
flag = 0;
}
}
//数组全部遍历完都没找,输出“NO"
if(flag) cout << "*NO*";
return 0;
}