fvi*_*r99 0 c++ matrix minimum
如何在*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;
}
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
它变得如此短暂!
该函数std::min_element
返回指向最小元素的指针,因此您取消引用返回的指针以获取(最小元素的)值.
要std::min_element
在您的程序中使用,您必须包含此标头:
#include <algorithm>
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.