马鞍数查找算法:C++代码实现及示例

1. 算法定义

在矩阵中,如果一个数在它所在的行上是最小的,而在它所在的列上是最大的,则称这个数为“马鞍数”。

2. 算法思路

为了找到矩阵中的马鞍数,我们可以采用以下步骤:

  1. 遍历矩阵中的每个元素。
  2. 检查当前元素是否为其所在行的最小值。
  3. 如果是,则检查当前元素是否为其所在列的最大值。
  4. 如果是,则该元素为一个马鞍数。

3. C++代码实现

#include <iostream>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    int matrix[10][10];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> matrix[i][j];
        }
    }
    bool found = false;
    for (int i = 0; i < n; i++) {
        bool isRowMin = true;
        for (int j = 0; j < m; j++) {
            if (matrix[i][j] > matrix[i][j]) {
                isRowMin = false;
                break;
            }
        }
        if (isRowMin) {
            bool isColMax = true;
            for (int k = 0; k < n; k++) {
                if (matrix[i][j] < matrix[k][j]) {
                    isColMax = false;
                    break;
                }
            }
            if (isColMax) {
                found = true;
                cout << i + 1 << ' ' << j + 1 << ' ' << matrix[i][j] << endl;
            }
        }
    }
    if (!found) {
        cout << 'not exit' << endl;
    }
    return 0;
}

4. 示例

样例1:

输入: 5 5 5 6 7 8 9 4 5 6 7 8 3 4 5 2 1 2 3 4 9 0 1 2 5 4 8

输出: 1 1 1

样例2:

输入: 4 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

输出: not exit

5. 总结

本文介绍了马鞍数查找算法的原理、代码实现和示例。通过学习本文,读者可以更好地理解马鞍数的定义、查找方法以及实际应用场景。


原文地址: https://www.cveoy.top/t/topic/p5nN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录