c ++在2d数组对角线中找到最低点

时间:2017-10-22 15:51:29

标签: c++ arrays

需要找到数组对角线中的最低值,想出了这段代码,但是并没有真正起作用。

int min = mas[0][0];
for (int i = 0; i < n; i++) {
  for (int j = 0; j < m; j++) {
    if (mas[i][j] < min) min = mas[i][j];
  }
}
cout << "min = " << min << endl;
cout << endl;

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

获取对角线元素,将它们存储在容器中并使用std::min_element获取最小的元素:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    int mas[5][5] = { { 1, 2, 3, 4, 5 }, 
                      { 1, 2, 3, 4, 5 }, 
                      { 4, 3, 2, 1, 45 }, 
                      { 5, 3, 8, 9, 66 }, 
                      { 4, 3, 2, 1, 45 } };
    std::vector<int> v;
    for (int i = 0; i < 5; i++) {
        v.push_back(mas[i][5 - i - 1]);
    }
    auto min = *std::min_element(v.begin(), v.end());
    std::cout << "The smallest element on the diagonal is: " << min;
}

您要搜索的对角线公式为mas[i][n - i - 1],对角线为mas[i][i],另一对角线为int min = mas[0][n - 0 - 1]; for (int i = 0; i < n; i++) { if ((mas[i][n - i - 1]) < min){ min = mas[i][n - i - 1]; } } 。 如果您坚持使用原始数组:

int min = mas[0][0];
for (int i = 0; i < n; i++) {
    if ((mas[i][i]) < min){
        min = mas[i][n - i - 1];
    }
}

对于一个对角线和:

    $args = array(

        'post_type' => 'job_listing',
        'post_status' => 'publish',
        'orderby' => array( 'meta_value_num' => 'DESC', 'title' => 'ASC' ),
        'posts_per_page' => 100,
        'tax_query' => array(
            array(
              'taxonomy' => 'job_listing_type',
              'field' => 'slug',
              'terms' => 'Startups'
            )
        )
    );

    $query = new WP_Query( $args );

为另一个。

答案 1 :(得分:0)

我们假设有一个名为mas的2D数组,其范围为nm。这是如何找到对角线的最小元素:

int minimal = mas[0][0];
for(unsigned int i = 1; i < std::min(n, m); ++i) {
    if(mas[i][i] < minimal) {
        minimal = mas[i][i];
    }
}

答案 2 :(得分:0)

以下面的3x3数组为例:

   0 1 2 
0| 7 3 2 |
1| 4 6 5 |
2| 1 9 8 |

如您所见,对角线元素的坐标为(0,0),(1,1)和(2,2)。

使用这个事实我们可以使用两个for循环迭代2D数组,只找到xy坐标相等的最小值:

#include <iostream>

using namespace std;

int main() {
  int height = 3;
  int width = 3;

  int arr[height][width] =
  {
    {7,3,2},
    {4,6,5},
    {1,9,8}
  };

  cout << "The 2D array looks like this: " << endl;
  int min = arr[0][0];
  for (int i = 0; i < height; i++ ) {
    for (int j = 0; j < width; j++ ) {
      cout << arr[i][j] << " ";
      if(i==j and min > arr[i][j]) {
        min = arr[i][j];
      }
    }
    cout << endl;
  }
  cout << "The minimum value of the diagonal of the 2D array is: " << min << endl;
  return 0;
}

<强>输出:

The 2D array looks like this: 
7 3 2 
4 6 5 
1 9 8 
The minimum value of the diagonal of the 2D array is: 6