21xrx.com
2024-09-19 08:58:13 Thursday
登录
文章检索 我的文章 写文章
C++二维向量寻找鞍点
2023-06-24 08:33:43 深夜i     --     --
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++编程指南

评论区

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