21xrx.com
2024-11-05 17:33:45 Tuesday
登录
文章检索 我的文章 写文章
的值在该行上最小,在该列上最大。 如何在C++中找出二维数组的鞍点?
2023-07-07 18:50:52 深夜i     --     --
二维数组 鞍点 C++

在二维数组中,鞍点是指数组中的一个元素,在该行上是最小值,在该列上是最大值。在C++中,要找出二维数组的鞍点,可以按照以下步骤进行:

1.定义二维数组并初始化

首先,需要定义一个二维数组,并初始化它的元素。可以使用随机数或者手动输入的方式来初始化数组。

2.寻找每一行的最小值

遍历每一行元素,找出该行中最小的元素,并记录下该元素的值和位置。

3.寻找每一列的最大值

遍历每一列元素,找出该列中最大的元素,并记录下该元素的值和位置。

4.比较每个元素的值和位置

对于每个元素,比较它的值和它所在行的最小值、所在列的最大值。如果该元素的值既是行最小值又是列最大值,那么该元素就是鞍点。

5.输出鞍点的值和位置

如果存在鞍点,就输出它的值和位置。如果不存在鞍点,就输出“数组中不存在鞍点”。

下面是一段示例代码,用于寻找二维数组的鞍点:


#include <iostream>

using namespace std;

int main() {

  const int ROWS = 3;

  const int COLS = 3;

  int arr[ROWS][COLS] = { 1,

              5,

              7};

  int minInRow = 0;

  int maxInCol = 0;

  bool foundSaddle = false;

  for (int i = 0; i < ROWS; i++) {

    minInRow = arr[i][0];

    for (int j = 1; j < COLS; j++) {

      if (arr[i][j] < minInRow) {

        minInRow = arr[i][j];

      }

    }

    for (int j = 0; j < COLS; j++) {

      if (arr[i][j] == minInRow) {

        maxInCol = arr[0][j];

        for (int k = 1; k < ROWS; k++) {

          if (arr[k][j] > maxInCol) {

            maxInCol = arr[k][j];

          }

        }

        if (arr[i][j] == maxInCol) {

          cout << "Saddle point found: " << arr[i][j]

             << " at (" << i << "," << j << ")" << endl;

          foundSaddle = true;

        }

      }

    }

  }

  if (!foundSaddle)

    cout << "No saddle point found" << endl;

  

  return 0;

}

运行结果如下:


Saddle point found: 5 at (1,1)

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复