Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาองค์ประกอบพีคในอาร์เรย์ 2 มิติใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมค้นหาองค์ประกอบพีคในอาร์เรย์ 2 มิติ

องค์ประกอบจะเรียกว่าองค์ประกอบพีค หากองค์ประกอบทั้งหมดที่อยู่รอบๆ มีขนาดเล็กกว่าองค์ประกอบ

มาดูขั้นตอนการแก้ปัญหากัน

  • เริ่มต้นอาร์เรย์ 2D ด้วยข้อมูลจำลอง

  • วนซ้ำบนอาร์เรย์ 2 มิติ

    • ขั้นแรก ตรวจสอบองค์ประกอบมุมของอาร์เรย์ 2 มิติ

    • ถัดไป เขียนเงื่อนไขสำหรับแถวแรกและแถวสุดท้ายของอาร์เรย์ 2 มิติ

    • ตอนนี้ ให้ตรวจสอบคอลัมน์แรกและคอลัมน์สุดท้ายของอาร์เรย์ 2 มิติ

    • และสุดท้าย ตรวจสอบองค์ประกอบตรงกลาง

    • ในแต่ละกรณี เราต้องเปรียบเทียบองค์ประกอบปัจจุบันกับองค์ประกอบโดยรอบ จะแตกต่างกันไปตามเงื่อนไขข้างต้น

    • ส่งกลับค่าทุกที่ที่คุณพบผลลัพธ์

ตัวอย่าง

มาดูโค้ดกันเลย

#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;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

7

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น