c++ - 查找二维数组C++中每一行的最大值

标签 c++ multidimensional-array max

我已经设法找到二维数组每一行的最小值

void findLowest(int A[][Cm], int n, int m)
{
    int min = A[0][0];
    for (int i = 0; i < n; i++)
    {
         for (int j = 0; j < m; j++)
         {
             if (A[i][j] < min)
             {
                 min = A[i][j];
             }
         }
     out << i << " row's lowest value " << min << endl;
    }
}

我试图用同样的方法找到每一行的最大值,但它只显示第一个最大值

void findHighest(int A[][Cm], int n, int m)
{
     int max = A[0][0];
     for (int i = 0; i < n; i++)
     {
         for (int j = 0; j < m; j++)
         {
             if (A[i][j] > max)
             {
                max = A[i][j];
             }
         }
     out << i << " row's highest value " << max << endl;
     }
}

我找不到第二个函数有什么问题,为什么它只显示它找到的第一个最大值。有什么帮助吗?

最佳答案

这两个函数返回整个数组的结果(最大值或最小值)而不是每一行,因为您设置了一次 max 而不是每行一次。您可以获得每一行的结果,如下所示:

void findHighest(int A[][Cm], int n, int m)
{
     for (int i = 0; i < n; i++)
     {
         int max = A[i][0];
         for (int j = 1; j < m; j++)
         {
             if (A[i][j] > max)
             {
                max = A[i][j];
             }
         }
         // do something with max
     }
}

或者,更好的是,使用标准库函数 max_element :

void findHighest(int A[][Cm], int n, int m)
{
     if (m <= 0) return;
     for (int i = 0; i < n; i++)
     {
         int max = *std::max_element(A[i], A[i] + m);
         // do something with max
     }
}

这应该为您提供易于检查的所有值:

#include <algorithm>
#include <iostream>

enum { Cm = 2 };

void findHighest(int A[][Cm], int n, int m) {
  if (m <= 0) return;
  for (int i = 0; i < n; i++) {
    int max = *std::max_element(A[i], A[i] + m);
    std::cout << max << " ";
  }
}

int main() {
  int A[2][2] = {{1, 2}, {3, 4}};
  findHighest(A, 2, 2);
}

打印2 4

关于c++ - 查找二维数组C++中每一行的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34210401/

相关文章:

python - 如何使用 python xarray 使用多维坐标对数据进行子集化?

Java:获取变量的最大值

c++ - 选择/轮询循环中的回调和延迟

c++ - 为什么我的 C++ 并行程序在 MPI_Gather 中出现 MPI fatal error ?

c++ - 为什么简单的双映射 (std::string <-> int) 不起作用?

python - 使用另一个 numpy ndarray 过滤一个 numpy ndarray

c++ - char指针和char数组的区别

php - 在 foreach 中使用引用 (&) 在输出数组中添加 `&`?是不是bug

java - 求数组的最小值、最大值和平均值

javascript - 获取 JSON 格式的 var 中的最大值