《C语言》找出任意一个二维数组中的鞍点。 所谓鞍点,即是该位置上的元素在所在行中最大而在所在列中最小。一个二维数组中可能有多个鞍点,也可能没有鞍点。要求输出所有鞍点的位置,无鞍点时给出有关信息。
参考代码如下:
#include <stdio.h>
/*
找出一个二维数组中的鞍点,即该位置上的元素在该行最大,
在该列上最小,也可能没有鞍点。存在则输出坐标;否则输出 -1.
*/
int main(void)
{
int a[3][3], max, min, i, j, k, m;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
scanf("%d", &a[i][j]); //输入数组
for (i = 0; i < 3; i++)
{
max = a[i][0]; //给max 赋初始值
for (j = 0; j < 3; j++)
if (a[i][j] > max)
{
max = a[i][j];
k = j; //找到第i行的最大值;
}
min = max; //把max的值作为第k列的最小值
for (m = 0; m < 3; m++) //第k列保持不变,变换行数m
{
if (min > a[m][k]) //若不符合鞍点性质,则break结束
break;
}
if (m == 3)
{
printf("%d %d", i + 1, k + 1); //遍历完当前列,若当前值符合鞍点性质,
break; //则输出鞍 点坐标
}
}
if (i == 3)
printf("%d", -1); //若整个数组遍历完成,还未找到鞍点,则返回-1
return 0;
}
如有帮助,望采纳!谢谢!