用c找出一个二维数组中的鞍点
时间: 2023-06-03 21:07:43 浏览: 64
可以的,那么让我们来看一下具体的代码实现。
假设二维数组的行数为m,列数为n,可以通过枚举每一个元素,判断它是否为它所在行的最大值以及所在列的最小值。如果满足这个条件,则可以判断这个元素为鞍点。
具体实现代码如下:
```
void findSaddlePoint(int matrix[][n], int row, int col) {
int i, j, k, saddle, rowMax, colMin, flag;
for(i = 0; i < row; i++) {
for(j = 0; j < col; j++) {
saddle = matrix[i][j];
rowMax = saddle;
colMin = saddle;
flag = 1; // 先默认鞍点存在
// 寻找所在行的最大值
for(k = 0; k < col; k++) {
if(matrix[i][k] > rowMax) {
rowMax = matrix[i][k];
}
}
// 判断是否符合条件
if(saddle < rowMax) {
flag = 0; // 不符合条件
}
// 寻找所在列的最小值
for(k = 0; k < row; k++) {
if(matrix[k][j] < colMin) {
colMin = matrix[k][j];
}
}
// 判断是否符合条件
if(saddle > colMin) {
flag = 0; // 不符合条件
}
if(flag == 1) {
printf("(%d,%d)=%d\n", i, j, saddle);
}
}
}
}
```
需要注意的是,这个函数中的数组matrix必须是全局变量或者传递的参数,不能是局部变量。同时,在使用这个函数前需要先声明数组的行数和列数,例如可以写成:
```
#define m 3
#define n 3
int matrix[m][n] = {{1,2,3},{4,5,6},{7,8,9}};
int main() {
findSaddlePoint(matrix, m, n);
return 0;
}
```
这里的例子是在一个3x3的矩阵中寻找鞍点,如果要在其他的矩阵中寻找鞍点,只需要将它们的行数、列数、以及数组元素改成对应的值即可。