如果给定值较低,则行和列之间的最大值-C ++

时间:2018-11-12 17:57:29

标签: c++ algorithm

第一次问,我在C ++中还是个菜鸟,所以请保持温柔。谢谢!

我有一个给定的问题:如果值是3,并且我有2行2列的矩阵,我希望我的程序在元素小于给定值的行和列之间做最大( 3)。

这是我尝试过的:

#include <iostream>
#include <stdint.h>
#include <stdio.h>
#include <algorithm> 
#include <numeric>

using namespace std;


int main() {

    int e, markLine[0],markRow[0];

    int ary[2][2] = { {2,3},
                      {3,2} };
    e=3;

    for (int i =0; i < markRow.size(); i++)
    {
        for (int j=0; j< markLine.size(); j++)
        if( ary[i][j] < e ) {
            markLine[i]=1;
            markRow[j]=1;
        }
        std::cout << (std::max(std::accumulate(markLine),std::accumulate(markRow)));
    }

}

1 个答案:

答案 0 :(得分:1)

C ++中的数组不是对象,因此它们没有为它们定义任何像size()这样的方法。

所以,markRow.size()是错误的。

在变量声明语句中,需要为整数数组markLine []和markRow []分配大小。因此,写入markLine [0]和markRow [0]仅表示正在创建大小为0的数组。那是错误的。

为markLine []和markRow []分配大小。

要为markLine []和markRow []分配零值,则仅用于循环,分别初始化或直接初始化(因为它们是很小的数组)

for(i=0;i<2;i++)
{
 markRow[i]=0;
 markLine[i]=0;
}
//or
//markRow[ ]={0,0};
//markLine[ ]={0,0};

累加函数不能像编写的那样工作,但是它具有三个参数。起始位置,结束位置和第三个变量,并加上部分和。

accumulate(first,last,sum);

您不需要使用std,因为您已经在使用命名空间std。

“使用命名空间标准”;语句会自动在程序中所需的位置添加std ::。

最后,编写的问题不是很清楚,因此,我无法弄清楚该程序的动机或预期输出。

但是,如果按照此答案的指示在所需的位置进行了更正,则程序将成功运行。