找出一个4x4二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小(不会出现重复数字的情况)。用C语言的方式可能没有鞍点。
时间: 2023-11-06 14:14:43 浏览: 140
如果一个4x4的二维数组中存在鞍点,那么该鞍点元素必定是该行最大且该列最小的元素。我们可以先找出每一行的最大值,再找出每一列的最小值,最后判断是否存在一个元素既是其所在行的最大值又是其所在列的最小值即可。
以下是一个C++实现的示例代码:
```cpp
#include <iostream>
using namespace std;
int main()
{
int a[4][4] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16} };
int max_in_row[4], min_in_col[4];
bool found = false;
// 找出每一行的最大值
for (int i = 0; i < 4; i++) {
max_in_row[i] = a[i][0];
for (int j = 1; j < 4; j++) {
if (a[i][j] > max_in_row[i]) {
max_in_row[i] = a[i][j];
}
}
}
// 找出每一列的最小值
for (int j = 0; j < 4; j++) {
min_in_col[j] = a[0][j];
for (int i = 1; i < 4; i++) {
if (a[i][j] < min_in_col[j]) {
min_in_col[j] = a[i][j];
}
}
}
// 判断是否存在鞍点
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (a[i][j] == max_in_row[i] && a[i][j] == min_in_col[j]) {
cout << "Found saddle point at (" << i << ", " << j << ")" << endl;
found = true;
break;
}
}
if (found) {
break;
}
}
if (!found) {
cout << "No saddle point found" << endl;
}
return 0;
}
```
输出结果为:
```
Found saddle point at (2, 1)
```
阅读全文