ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมค้นหาองค์ประกอบพีคในอาร์เรย์ 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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น