c语言从控制台输入二维数组找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。
时间: 2024-11-10 18:25:01 浏览: 56
在C语言中,要找出给定二维数组的“鞍点”(即行最大值列最小值),你需要遍历整个数组,同时维护当前行的最大值和当前列的最小值。以下是步骤:
1. 首先,创建两个变量`row_max`和`col_min`,分别初始化为数组的第一个元素,用于记录行最大值和列最小值。
2. 然后,遍历数组的每个元素。对于每一行:
a. 如果当前元素大于`row_max`,更新`row_max`为当前元素。
b. 对于每一列,如果当前元素小于等于`col_min`,更新`col_min`为当前元素。
3. 当遍历完成后,数组中的`(i, j)`位置,如果`array[i][j] == row_max`并且`array[i][j] == col_min`,那么这个位置就是“鞍点”。
下面是伪代码示例:
```c
#include <stdio.h>
int findHill(int array[m][n], int m, int n) {
int row_max = array[0][0];
int col_min = array[0][0];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (array[i][j] > row_max) {
row_max = array[i][j];
}
if (array[i][j] <= col_min) {
col_min = array[i][j];
}
}
}
// 检查是否有鞍点
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (array[i][j] == row_max && array[i][j] == col_min) {
return i * n + j;
}
}
}
// 如果找不到鞍点,则返回-1 或者抛出异常
return -1;
}
int main() {
int arr[10][10]; // 假设你的二维数组已填充
int m = sizeof(arr) / sizeof(arr[0]);
int n = sizeof(arr[0]) / sizeof(arr[0][0]);
int result = findHill(arr, m, n);
if (result != -1)
printf("鞍点的位置是 %d\n", result);
else
printf("没有找到鞍点.\n");
return 0;
}
```
阅读全文