题目:假设我们输入4X4的二维数组,如果在这个数组中存在一个数,满足这个数在所在的行中最大,且所在的列上最小,则这个数就称为“马鞍点”,现输入这个二维数组,要求你判断这个数组是否存在马鞍点,如果存在,则按照 "行:%d 列:%d 值:%d" 的方式输出;如果不存在,则输出NONE。

样例输入:

1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

样例输出:

行:3 列:2 值:6

以下是参考答案:

#include "stdio.h"
#define n 4
main()
{
	int a[4][4];
	int i,j,max1=0,max=0,min1=0,min=0;//初始化 
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			scanf("%d",&a[i][j]);
	for(i=0;i<n;i++)
	{
		max=a[i][0];
		for(j=0;j<n;j++)
			if(a[i][j]>max)
			{
				max=a[i][j];
				max1=j;
			}
		min=a[0][max1];
		for(j=0;j<n;j++)
			if(a[j][max1]<min)
			{
				min=a[j][max1];
				min1=j;
			}
		if(min==max) break;
	}
	if(i>=n) printf("NONE");
	else printf("行:%d 列:%d 值:%d",min1+1,max1+1,max);
}

首先我们令a[i][0]为最大值,实现在一行中找到最大值,再根据最大值对应的列