C ++在n * m矩阵的每一行中查找最小值

Posted

技术标签:

【中文标题】C ++在n * m矩阵的每一行中查找最小值【英文标题】:C++ Find the minimum value in every row of a n*m matrix 【发布时间】:2013-02-25 21:36:36 【问题描述】:

如何在 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;
    

【问题讨论】:

如果您定义一个单独的函数,该函数接收 1 行(一维数组)并返回其最小值,然后使用它来计算矩阵中的所有最小值,问题就会变得清晰 【参考方案1】:

在第一个循环中声明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,请包含&lt;climits&gt;


使用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>

希望对您有所帮助。

【讨论】:

以上是关于C ++在n * m矩阵的每一行中查找最小值的主要内容,如果未能解决你的问题,请参考以下文章

在 MATLAB/Octave 中查找 N 维数组中的所有局部最小值

matlab 求出一维矩阵中最小值,且求出该最小值在矩阵中的位置,求各位帮帮忙

浙大版《C语言程序设计(第3版)》题目集 练习4-10 找出最小值 (20 分)

如何查找excel一行中最小值

zzuli-2259matrix

zzuli-2259 matrix