用C语言编写一个程序用来寻找矩阵的鞍点。(在所在行中最大,所在列中最小,鞍点可能不止一个)。
时间: 2023-06-19 09:08:22 浏览: 58
以下是用C语言编写的程序,用于寻找矩阵的鞍点:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main() {
int matrix[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int row_max[ROWS] = {0}; // 用于存储每行的最大值
int col_min[COLS] = {0}; // 用于存储每列的最小值
int saddle_points[ROWS * COLS][2]; // 用于存储鞍点的坐标
int num_saddle_points = 0; // 鞍点的数量
// 找出每行的最大值
for (int i = 0; i < ROWS; i++) {
row_max[i] = matrix[i][0];
for (int j = 1; j < COLS; j++) {
if (matrix[i][j] > row_max[i]) {
row_max[i] = matrix[i][j];
}
}
}
// 找出每列的最小值
for (int j = 0; j < COLS; j++) {
col_min[j] = matrix[0][j];
for (int i = 1; i < ROWS; i++) {
if (matrix[i][j] < col_min[j]) {
col_min[j] = matrix[i][j];
}
}
}
// 找出鞍点的坐标
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (matrix[i][j] == row_max[i] && matrix[i][j] == col_min[j]) {
saddle_points[num_saddle_points][0] = i;
saddle_points[num_saddle_points][1] = j;
num_saddle_points++;
}
}
}
// 输出鞍点的坐标
if (num_saddle_points == 0) {
printf("矩阵中不存在鞍点\n");
} else {
printf("矩阵中的鞍点坐标为:\n");
for (int i = 0; i < num_saddle_points; i++) {
printf("(%d, %d)\n", saddle_points[i][0], saddle_points[i][1]);
}
}
return 0;
}
```
该程序定义了一个3x3的矩阵,并通过遍历每行和每列来找出每行的最大值和每列的最小值。然后程序再次遍历矩阵,找出鞍点的坐标,并将其存储在`saddle_points`数组中。最后,程序输出鞍点的坐标。