用c语言在矩阵中若有元素在它所在的行最小,而在它所在的列最大,则称这样的元素为鞍点。编程序查找一个矩阵中的鞍点,并输出。
时间: 2024-05-08 07:21:29 浏览: 63
找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有鞍点)。Java
4星 · 用户满意度95%
以下是一个简单的C语言程序,可以查找矩阵中的鞍点:
```c
#include <stdio.h>
int main()
{
int rows, cols, i, j, k;
int matrix[10][10]; // 定义一个10x10的矩阵
// 输入矩阵的行数和列数
printf("Enter number of rows and columns: ");
scanf("%d %d", &rows, &cols);
// 输入矩阵的元素
printf("Enter matrix elements:\n");
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 查找鞍点
for (i = 0; i < rows; i++) {
int min = matrix[i][0]; // 对于每一行,先假设第一个元素是最小的
int min_col = 0; // 记录最小元素的列号
for (j = 1; j < cols; j++) {
if (matrix[i][j] < min) {
min = matrix[i][j];
min_col = j;
}
}
// 检查最小元素是否也是它所在列的最大元素
int is_saddle_point = 1;
for (k = 0; k < rows; k++) {
if (matrix[k][min_col] > min) {
is_saddle_point = 0;
break;
}
}
// 如果是鞍点,则输出它的位置
if (is_saddle_point) {
printf("Saddle point found at (%d, %d)\n", i, min_col);
}
}
return 0;
}
```
该程序首先让用户输入矩阵的行数和列数,然后输入矩阵的元素。接下来,对于每一行,它查找该行中最小的元素,同时记录下该元素的列号。然后它检查该元素是否也是它所在列的最大元素,如果是,则输出该元素的位置。如果没有找到鞍点,则程序不会输出任何东西。
阅读全文