এই সমস্যায়, আমাদের দুটি ডাইমেনশনাল অ্যারে mat[n][m] দেওয়া আছে। আমাদের কাজ হল পজিশনাল এলিমেন্টের সংখ্যা খুঁজে বের করা।
একটি এলিমেন্টকে পজিশনাল এলিমেন্ট বলা হয় যদি वो এলিমেন্ট সারিটি বা কলামের সর্বোচ্চ বা সর্বনিম্ন এলিমেন্ট হয়।
উদাহরণ
ইনপুট
mat[][] = {{2, 5, 7}, {1, 3, 4}, {5, 1, 3}}
আউটপুট
8
ব্যাখ্যা
এলিমেন্ট ২, ৫, ৭, ১, ৪, ৫, ১, ৩ হল পজিশনাল এলিমেন্ট।
সমাধানের পদ্ধতি
এই সমস্যার সহজ সমাধান হল প্রতিটি সারি ও কলামের সর্বোচ্চ ও সর্বনিম্ন এলিমেন্ট স্টোর করা। এবং তারপর শর্ত চেক করে সংখ্যা গণনা করা।
প্রোগ্রাম উদাহরণ
#include <iostream>
using namespace std;
const int MAX = 100;
int countAllPositionalElements(int mat[][MAX], int m, int n){
int rowmax[m], rowmin[m];
int colmax[n], colmin[n];
// প্রতিটি সারির ম্যাক্স ও মিন বের করুন
for (int i = 0; i < m; i++) {
int rminn = 10000;
int rmaxx = -10000;
for (int j = 0; j < n; j++) {
if (mat[i][j] > rmaxx)
rmaxx = mat[i][j];
if (mat[i][j] < rminn)
rminn = mat[i][j];
}
rowmax[i] = rmaxx;
rowmin[i] = rminn;
}
// প্রতিটি কলামের ম্যাক্স ও মিন বের করুন
for (int j = 0; j < n; j++) {
int cminn = 10000;
int cmaxx = -10000;
for (int i = 0; i < m; i++) {
if (mat[i][j] > cmaxx)
cmaxx = mat[i][j];
if (mat[i][j] < cminn)
cminn = mat[i][j];
}
colmax[j] = cmaxx;
colmin[j] = cminn;
}
int positionalCount = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if ((mat[i][j] == rowmax[i]) || (mat[i][j] == rowmin[i]) ||
(mat[i][j] == colmax[j]) || (mat[i][j] == colmin[j])) {
positionalCount++;
}
}
}
return positionalCount;
}
int main(){
int mat[][MAX] = {
{ 2, 5, 7 },
{ 1, 3, 4 },
{ 5, 1, 3 }
};
int m = 3, n = 3;
cout << "Number of positional elements is " << countAllPositionalElements(mat, m, n);
return 0;
}
আউটপুট
Number of positional elements is 8