求n*m矩阵每一行的最小值

C++ Find the minimum value in every row of a n*m matrix

本文关键字:一行 最小值      更新时间:2023-10-16

如何在n*m矩阵的每一行中找到最小值,并将这些值放入新数组?到目前为止,我有这段代码,但它不能正常工作:

void min(const int t[max_city][max_bird], int allmin[], int n, int m)
{
    int min=t[0][0];
    for(int i=0; i<n; ++i)
    {
        for(int j=0; j<m; ++j)
        {
            if(t[i][j]<min)
            {
                min=t[i][j];
            }
        }
        allmin[i]=min;
        cout << i+1 << ". min: " << allmin[i] << endl;
    }
}

在第一个循环中声明min,并在那里初始化它:

for(int i=0; i<n; ++i)
{
   int min= INT_MAX; //do this here so that it gets initialized each time!
   for(int j=0; j<m; ++j)
   {
      //your code
   }
   //etc
}

使用INT_MAX,包括<climits>


使用std::min_element,您的函数可以重写为:

void min(const int t[max_city][max_bird], int allmin[], int n, int m)
{
    for(int i=0; i<n; ++i)
    {
        allmin[i] = *std::min_element(t[i], t[i] + m);
    }
}

它变得如此短!

函数std::min_element返回指向最小元素的指针,因此返回的指针解引用以获得(最小元素的)值。

要在你的程序中使用std::min_element,你必须包含这个头文件:

#include <algorithm>

希望对你有帮助。