Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 2D 배열에서 피크 요소 찾기

<시간/>

이 튜토리얼에서는 2D 배열에서 피크 요소를 찾는 프로그램을 작성할 것입니다.

요소 주변의 모든 요소가 요소보다 작은 경우 요소를 피크 요소라고 합니다.

문제를 해결하는 단계를 살펴보겠습니다.

  • 더미 데이터로 2D 배열을 초기화합니다.

  • 2D 배열을 반복합니다.

    • 먼저 2D 배열의 모서리 요소를 확인합니다.

    • 다음으로 2D 배열의 첫 번째 행과 마지막 행에 대한 조건을 작성합니다.

    • 이제 2D 배열의 첫 번째 열과 마지막 열을 확인하십시오.

    • 마지막으로 중간 요소를 확인합니다.

    • 각각의 경우에 현재 요소를 주변 요소와 비교해야 합니다. 위의 조건에 따라 다릅니다.

    • 결과를 찾을 때마다 값을 반환합니다.

예시

코드를 봅시다.

#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

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.