找出一行有多少个最大列值

Find how many maximum column values a row has

本文关键字:多少 一行      更新时间:2023-10-16

我正在用c++做一项作业,我已经在同一点上呆了好几天了,我知道我忽略了一些东西,但我不知道它是什么。

问题是:

m狗在n类别中比赛,每只狗的得分在0到10之间。绝对冠军狗(总得分最高的狗)赢得了多少个类别?

我应该使用简单的计算方法,如:最大搜索,线性搜索,对数搜索,计数,数组求和,。所以我不能用max(a, b)之类的

我的程序目前的结构如下:

  1. 有一个求和函数,它以一个向量作为输入,告诉我

  2. 的和
  3. 一个MaxSearch函数,它将整个矩阵作为输入,然后使用求和矩阵找到具有最大点数的行(这将是绝对赢家狗的行索引)

然后我尝试了多种不同的选项从这里移动,但没有一个工作,这是我迄今为止使用的函数,'mat'是我从文件或控制台获得的输入矩阵:

int ArraySum(const vector<int>& z)
{
    int s=0;
    for(unsigned i=0; i<z.size(); i++) s+=z[i];
    return s;
}

int MaxRow(const vector<vector <int> >& mat)throw(Range_Error)
{
    if(mat.size()==0) throw EmptyRange;
    int maxrow=ArraySum(mat[0]);
    int ind=0;
    for(unsigned i=1; i<mat.size();++i){
    int s=ArraySum(mat[i]);
    if(s>maxrow){
        maxrow=s;
        ind=i;}
    }
    return ind;
}
//And this is where I am stuck

我希望我已经理解你的问题了。更少的文字和更多的代码:

int MaxValueRow(const vector<vector <int> >& mat, int col)
{
  int m = math.size();
  int ind = 0;
  int maxPoints = mat[0][col];
  for (int r = 1; r < m; r++) {
    if (mat[r][col] > maxPoints) {
      maxPoints = mat[r][col];
      ind = r;
    }
  }
  return ind; // The correct return value is ind
}
int CountWins(const vector<vector <int> >& mat)
{
  int winnerRow =  MaxRow(mat);
  int count = 0;
  int n = mat[0].size();
  for (i = 0; i < n; i++) {
    if (MaxValueRow(i) == winnerRow)
      count++;
  }
  return count;
}

其中MaxValueRow(col)返回该列值最大的行