C语言中 鞍点的定义
指一个矩阵中,即该位置上的元素在该行上最大,在该列上最小。
一个二维数组可能没有鞍点。
例如:1,2,3
4,5,6
7,8,9
该矩阵中,鞍点为3所在的位置。
即数组坐标[ 0 ] [ 2 ],在第一行第三列中。
代码的实现
#include <stdio.h> int main() { int arr[3][3] = { {50,40,30}, {60,80,90}, {70,100,120} }; int a, b, max = 0, row = 0, flag = 0;//a为数组的行数下标,b为数组的列数下标 //如果找到了鞍点就给flag赋值为1 for (a = 0; a < 3; a++) { max = arr[0][0]; for (b = 0; b < 3; b++) { //找出一行中的最大值,并赋值为max if (arr[a][b] > max) { max = arr[a][b]; row = b; //row记录最大值所在的列 } } //判断max是否为该列上最小的元素 for (b = 0 ; b < 3 ;b++) { if (max > arr[b][row]) { break; } } //如果比较到一半跳出了循环,说明max不是该列最小 //如果可以全部比较完,即b = 3时,说明max为当列最小。 if (b == 3) { printf("该数组存在鞍点:%d\n在数组第%d行 第%d列\n", max, a + 1, row + 1); flag = 1; break; } } if (flag != 1) printf("该数组不存在鞍点\n"); return 0; }
代码运行结果
思路分析图解