Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm phần tử đỉnh trong ma trận 2D C++


Phần tử đỉnh trong ma trận 2D là phần tử lớn hơn **tất cả 4 láng giềng** (trên, dưới, trái, phãi). Các góc và biên có ít láng giềng hơn.

Phương pháp: Duyệt toàn bộ ma trận, kiểm tra từng vị trí theo trường hợp

  • 4 góc: so sánh 2 láng giềng.
  • Biên (không góc): so sánh 3 láng giềng.
  • Giữa: so sánh 4 láng giềng.
  • Trả về peak đầu tiên tìm thấy.

Ví dụ mã nguồn

#include <bits/stdc++.h>
using namespace std;

const int MAX = 256;

int findPeak2D(int arr[][MAX], int rows, int cols) {
    for (int i=0;i0 && arr[i][j] <= arr[i-1][j]) isPeak = false;
            if (i0 && arr[i][j] <= arr[i][j-1]) isPeak = false;
            if (j

Kết quả

7

Phần tử 7 tại (2,2) lớn hơn 3,4,6,6. Phức tạp O(rows×cols).