21xrx.com
2024-11-10 00:41:27 Sunday
登录
文章检索 我的文章 写文章
如何用C++找出二维数组的鞍点?
2023-07-04 21:43:39 深夜i     --     --
C++ 二维数组 鞍点 寻找

鞍点是指在二维数组中既是该列最大值又是该行最小值的数字。在C++中,我们可以通过一定的算法来寻找二维数组的鞍点。

要找出鞍点,我们可以先遍历每一行,找到该行的最小值并记录下该最小值所在的列数。然后再遍历该列,找到该列的最大值并判断该最大值是否等于该行的最小值。若相等,则该点即为鞍点。

具体实现代码如下:


int main() {

 int rows, cols;

 cout << "请输入二维数组的行数和列数:";

 cin >> rows >> cols;

 int arr[rows][cols];

 cout << "请逐行输入数组元素:" << endl;

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

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

   cin >> arr[i][j];

  }

 }

 // 寻找鞍点

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

  int min_val = arr[i][0];

  int min_col = 0;

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

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

    min_val = arr[i][j];

    min_col = j;

   }

  }

  bool is_saddle = true;

  for (int k = 0; k < rows; k++) {

   if (arr[k][min_col] > arr[i][min_col])

    is_saddle = false;

    break;

   

  }

  if (is_saddle)

   cout << "鞍点位置为:" << i << "

 }

 cout << "不存在鞍点。" << endl;

 return 0;

}

在以上代码中,我们首先读入二维数组的行数和列数,然后逐行输入数组元素。接着,我们通过嵌套的循环遍历每一行,并在该行中寻找最小值和最小值所在的列数。然后,我们再遍历该列,判断该列的最大值是否等于该行的最小值,若成立,则输出该点的位置并停止程序运行。如果没有找到鞍点,则输出“不存在鞍点”。

通过以上代码的实现,我们可以轻松地寻找二维数组的鞍点,提高程序效率和准确性。

  
  

评论区

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