编写程序求出二维数组中的鞍点。 提示:测试集要求先输入一个二维数组,输出鞍点所在行和列以及元素值;无鞍点则输出-1。 效果如下: 输入:9 10 11 2 23 15 2 11 16 输出:1 3 11 c++
时间: 2024-12-09 21:25:42 浏览: 11
C语言程序设计-求一个二维数组中的鞍点
5星 · 资源好评率100%
在C++中,你可以使用嵌套循环遍历二维数组,并通过比较当前元素与它上一格和左一格的值来查找鞍点。鞍点是指数组中某个位置的值既不大于其上方的元素也不小于其左侧的元素。以下是简单的算法实现:
```cpp
#include <iostream>
using namespace std;
// 定义二维数组
int arr[9][10];
// 检查当前位置是否为鞍点
bool isKnot(int i, int j) {
if (i == 0 || j == 0 || i >= 9 || j >= 10)
return false; // 边界检查
// 检查鞍点条件
if (arr[i][j] > arr[i - 1])
return true;
else
return false;
}
void findHorseRider() {
for (int i = 1; i < 9; ++i) { // 避免边界影响,从第二行开始
for (int j = 1; j < 10; ++j) {
if (isKnot(i, j)) {
cout << "鞍点在第 " << i << " 行、第 " << j << " 列,值为:" << arr[i][j] << endl;
return; // 找到鞍点后立即返回
}
}
}
cout << "-1" << endl; // 如果没有找到鞍点,则输出-1
}
int main() {
// 读取二维数组
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 10; j++) {
cin >> arr[i][j];
}
}
findHorseRider(); // 调用函数寻找鞍点
return 0;
}
```
这个程序首先读入一个9x10的二维数组,然后逐个检测每个元素,如果发现鞍点就立刻输出并结束搜索。如果没有找到,最后输出-1。
阅读全文