gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:40 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com