Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm phần tử đỉnh trong mảng 2D trong C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm phần tử đỉnh trong một mảng 2D.

Một phần tử được gọi là phần tử đỉnh nếu tất cả các phần tử xung quanh nó đều nhỏ hơn phần tử đó.

Hãy xem các bước để giải quyết vấn đề.

  • Khởi tạo mảng 2D với dữ liệu giả.

  • Lặp lại trên mảng 2D.

    • Đầu tiên, hãy kiểm tra các phần tử góc của mảng 2D.

    • Tiếp theo, viết điều kiện cho hàng đầu tiên và hàng cuối cùng của mảng 2D.

    • Bây giờ, hãy kiểm tra cột đầu tiên và cột cuối cùng của mảng 2D.

    • Và cuối cùng, hãy kiểm tra các yếu tố ở giữa.

    • Trong mỗi trường hợp, chúng ta phải so sánh phần tử hiện tại với các phần tử xung quanh của nó. Nó thay đổi dựa trên các điều kiện trên.

    • Trả lại giá trị ở bất cứ nơi nào bạn tìm thấy kết quả.

Ví dụ

Hãy xem mã.

#include <bits/stdc++.h>
using namespace std;
const int MAX = 256;
int findPeakElement(int arr[][MAX], int rows, int columns) {
   for (int i = 0; i < rows; i++) {
      for (int j = 0; j < columns; j++) {
         if (i == 0 && j == 0) {
            if (arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j + 1]) {
               return arr[i][j];
            }
         }
         else if (i == 0 && j == columns - 1) {
            if (arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j - 1]) {
               return arr[i][j];
            }
         }
         else if (i == rows - 1 && j == 0) {
            if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i][j + 1]) {
               return arr[i][j];
            }
         }
         else if (i == rows - 1 && j == columns - 1) {
            if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i][j - 1]) {
               return arr[i][j];
            }
         }
         else if (i == 0) {
            if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i + 1][j]) {
               return arr[i][j];
            }
         }
         else if (i == rows - 1) {
            if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i - 1][j]) {
               return arr[i][j];
            }
         }
         else if (j == 0) {
            if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j + 1]) {
               return arr[i][j];
            }
         }
         else if (j == columns - 1) {
            if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j - 1]) {
               return arr[i][j];
            }
         }
         else {
            if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j]) {
               return arr[i][j];
            }
         }
      }
   }
   return -1;
}
int main() {
   int arr[][MAX] = {
      { 1, 2, 3, 4 },
      { 2, 3, 4, 5 },
      { 1, 3, 7, 5 },
      { 1, 2, 6, 6 } };
   int rows = 4, columns = 4;
   cout << findPeakElement(arr, rows, columns) << endl;
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

7

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.