একটি ২D অ্যারে দেওয়া থাকলে, সেটিতে পিক এলিমেন্ট (চারদিকের প্রতিবেশী চেয়ে বড় মান বালা এলিমেন্ট) বের করতে হবে।
পদ্ধতি
- ২D অ্যারে ইনিশিয়ালাইজ করুন।
- নেস্টেড লুপ দিয়ে সব এলিমেন্ট চেক করুন।
- কーナー, এজ, এবং মিডল এলিমেন্টের জন্য আলাদা শর্ত লিখুন।
- প্রতিবেশী ৪টি (কーナー), ৫টি (এজ), বা ৮টি (মিডল) এলিমেন্টের সাথে তুলনা করুন।
- প্রথম পিক এলিমেন্ট পাওয়া গেলে রিটার্ন করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
const int MAX = 256;
int findPeakElement(int arr[][MAX], int rows, int cols) {
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; 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==cols-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==cols-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==cols-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-1][j] && arr[i][j] > arr[i+1][j] && arr[i][j] > arr[i][j-1] && arr[i][j] > arr[i][j+1]) 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}};
cout << findPeakElement(arr, 4, 4) << endl;
return 0;
}
আউটপুট
7