C++ 如何求二维数组行中的最大和

C++ 如何求二维数组行中的最大和,c++,multidimensional-array,sum,C++,Multidimensional Array,Sum,我已经找到了一些与这个问题相关的答案,但我真的不知道它们是如何工作的。我需要找到一个二维的每一行的最大和并打印出来,但不要打印出任何其他的和。以下是我到目前为止的情况: #include <iostream> using namespace std; int main (int argc, char ** argv) { int v[3][5]; // 3 rows, then 5 columns for (int i=0; i<3; i++){

我已经找到了一些与这个问题相关的答案,但我真的不知道它们是如何工作的。我需要找到一个二维的每一行的最大和并打印出来,但不要打印出任何其他的和。以下是我到目前为止的情况:

#include <iostream>
using namespace std;

int main (int argc, char ** argv)
{

    int v[3][5]; // 3 rows, then 5 columns
    for (int i=0; i<3; i++){
        for (int j=0; j<5; j++){
            cin >> v[i][j];

        }
    }
    //test reading value
    for (int i=0; i<3; i++){
            for (int j=0; j<5; j++){
                cout << v[i][j];
                if (i!=4)
                    cout << ' ';

            }
            cout << '\n';
        }
    //solve it
    for (int i=0; i<3; i++){
        int sum = 0;
                for (int j=0; j<5; j++){
                    sum += v[i][j];
                }
                cout << sum << '\n';
            }
    return 0;
}
#包括
使用名称空间std;
int main(int argc,字符**argv)
{
int v[3][5];//3行,然后是5列
对于(int i=0;i v[i][j];
}
}
//测试读数

对于(inti=0;i,您可以通过跟踪为数组的每一行计算的最大和来实现这一点

//solve it
int largestSum = 0;
for (int i = 0; i<3; i++)
{
    int sum = 0;
    for (int j = 0; j<5; j++)
    {
        sum += v[i][j];
    }
    // check to see if we have computed a new larger sum and save it if we have.
    if (sum > largestSum)
    {
        largestSum = sum;
    }
}
cout << "largest sum: " << largestSum << '\n';
int biggestSum=0;

对于(int i=0;i,这里是我能想到的最短解决方案,也可以正确处理负和(C++11):

int maxSum=std::numeric_limits::min();
用于(常量自动和行:v)
maxSum=std::max(maxSum,std::accumulate(std::begin(行),std::end(行),0));

std::好吧,有什么问题吗?我需要得到每行的最大值。你自己尝试过吗?@OMGtechy是的,我尝试过。这就是我到目前为止所得到的。这就像我问题的第一步。我还有一个问题要问。@OMGtechy自从我得到了这个问题的答案后,我如何摆脱问题禁令。或者甚至使用
std::max
@OMGtechy是的,
std::max
将是groovy,但是像这样的问题通常与家庭作业有关,并且标准库的使用是有限的。足够公平:)可能值得添加一个“如果你能使用标准库” section@OMGtechy使用
std::accumulate
std::max
@CaptainObvlious更新示例您知道为什么这个问题会导致我被禁止发布新问题吗?我被禁止发布新问题。您如何解决这个问题?
#include <algorithm>
#include <numeric>

//solve it
int largestSum = 0;
for (int i = 0; i<3; i++)
{
    int sum = std::accumulate(std::begin(v[i]), std::end(v[i]), 0);
    largestSum = std::max(sum, largestSum);
}
cout << "largest sum: " << largestSum << '\n';
int biggestSum = 0;

for (int i=0; i<3; i++) {
    int currentSum = 0;      // sum of values in this row
    for (int j=0; j<5; j++){
            currentSum += v[i][j];
    }
  if ( currentSum > biggestSum) biggestSum = currentSum;  // we have new max
}

cout << biggestSum << '\n';
int maxSum = std::numeric_limits<int>::min();
for (const auto& row : v)
   maxSum = std::max(maxSum, std::accumulate(std::begin(row), std::end(row), 0));
std::cout << maxSum << std::endl;