21xrx.com
2025-06-08 22:06:06 Sunday
文章检索 我的文章 写文章
如何用C++找出二维数组的鞍点?
2023-07-04 21:43:39 深夜i     49     0
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;
}

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

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

  
  

评论区