21xrx.com
2025-04-27 13:43:05 Sunday
文章检索 我的文章 写文章
C++二维向量寻找鞍点
2023-06-24 08:33:43 深夜i     18     0
C++ 二维向量 鞍点 查找 矩阵操作

在C++编程中,我们经常需要对二维矩阵进行操作。有时候我们需要查找矩阵中的鞍点,也就是行中最小元素,列中最大元素即相交的那一个元素。本文将为大家介绍C++如何寻找二维向量中的鞍点。

首先,我们需要定义二维向量。在C++中,可以使用vector容器来定义数组。使用vector的好处是可以动态调整大小,省去了手动分配内存空间的麻烦。例如:

vector<vector<int>> matrix;

以上代码定义了一个二维向量matrix,其中的每一个元素都是一个int类型的向量。

接下来,我们需要遍历二维向量,找到行中最小值和列中最大值。可以使用for循环嵌套的方法进行遍历,代码如下:

int row = matrix.size();  // 行数
int col = matrix[0].size(); // 列数
for (int i = 0; i < row; i++) {
  int min_in_row = matrix[i][0]; // 初始化为该行第一个元素
  int max_in_col_index = 0;   // 初始化为该列第一个元素
  // 寻找该行最小值
  for (int j = 1; j < col; j++) {
    if (matrix[i][j] < min_in_row) {
      min_in_row = matrix[i][j];
    }
  }
  // 在该行中找到最小值对应的列
  for (int j = 1; j < col; j++) {
    if (matrix[i][j] == min_in_row)
      max_in_col_index = j;
      break;
    
  }
  // 寻找该列最大值
  for (int j = 0; j < row; j++) {
    if (matrix[j][max_in_col_index] > matrix[i][max_in_col_index])
      max_in_col_index = j;
    
  }
  // 检查是否为鞍点,如果是则输出
  if (max_in_col_index == i) {
    cout << "鞍点:" << matrix[i][max_in_col_index] << endl;
  }
}

以上代码中,我们通过嵌套的循环遍历了二维向量,首先在每一行中找到最小值,然后在该行中找到最小值对应的列,在该列中找到最大值。最后检查是否为鞍点,如果是则输出。

最后,我们来完整地展示如何通过C++寻找二维向量中的鞍点。

#include <iostream>
#include <vector> // 必要的头文件
using namespace std;
int main()
{
  vector<vector<int>> matrix{9,
                5,
                6};
  // 定义一个二维向量并初始化
  int row = matrix.size();  // 行数
  int col = matrix[0].size(); // 列数
  for (int i = 0; i < row; i++) {
    int min_in_row = matrix[i][0]; // 初始化为该行第一个元素
    int max_in_col_index = 0;   // 初始化为该列第一个元素
    // 寻找该行最小值
    for (int j = 1; j < col; j++) {
      if (matrix[i][j] < min_in_row) {
        min_in_row = matrix[i][j];
      }
    }
    // 在该行中找到最小值对应的列
    for (int j = 1; j < col; j++) {
      if (matrix[i][j] == min_in_row)
        max_in_col_index = j;
        break;
      
    }
    // 寻找该列最大值
    for (int j = 0; j < row; j++) {
      if (matrix[j][max_in_col_index] > matrix[i][max_in_col_index])
        max_in_col_index = j;
      
    }
    // 检查是否为鞍点,如果是则输出
    if (max_in_col_index == i) {
      cout << "鞍点:" << matrix[i][max_in_col_index] << endl;
    }
  }
  return 0;
}

以上代码展示了如何利用C++定义二维向量,并遍历该向量以查找鞍点。二维向量在C++编程中很常用,掌握其操作方法对于矩阵运算有很大的帮助。

  
  
下一篇: C++编程指南

评论区