इस समस्या में, हमें द्वि-आयामी सरणी mat[n][m] दी जाती है। हमारा कार्य स्थितिजन्य तत्वों की संख्या ढूंढना है।
एक तत्व को स्थितिजन्य तत्व कहा जाता है यदि वह तत्व पंक्ति या स्तंभ का अधिकतम या न्यूनतम तत्व है।
आइए एक उदाहरण से समस्या को समझते हैं,
इनपुट
mat[][] = {2, 5, 7} {1, 3, 4} {5, 1, 3}आउटपुट
8
व्याख्या
तत्व 2, 5, 7, 1, 4, 5, 1, 3 स्थितिजन्य तत्व हैं।
समाधान दृष्टिकोण
इस समस्या का एक सरल समाधान प्रत्येक पंक्ति और स्तंभ के अधिकतम और न्यूनतम तत्व को स्टोर करना है। और फिर शर्त की जांच करना और संख्या गिनना।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,
उदाहरण
#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