हमें NxN आकार का एक मैट्रिक्स दिया गया है। लक्ष्य उन सभी वैध इंडेक्स युग्मों (i, j) की गिनती ढूंढना है जैसे कि कॉलम j के तत्वों का योग पंक्ति i के तत्वों के योग से बड़ा है।
हम इसे मैट्रिक्स को पार करके और प्रत्येक पंक्ति और कॉलम के तत्वों के योग की गणना करके करेंगे।
प्रत्येक पंक्ति के तत्वों के योग को rowsum[N] में और प्रत्येक कॉलम के तत्वों के योग को colsum[N] में स्टोर करते हैं।
अब rowsum[i] और colsum[j] के युग्म बनाते हैं और जांचते हैं कि colsum[j] > rowsum[i] है या नहीं। यदि सही है तो ऐसे युग्मों के लिए काउंट बढ़ाते हैं।
आइए उदाहरणों से समझते हैं।
इनपुट: मैट्रिक्स= { { 1,2,0,1}, { 3,3,0,2}, { 1,3,0,2}, { 3,0,0,2} }; आउटपुट - वैध युग्मों की संख्या: 9
व्याख्या -
Rowsum[0]= 1+2+0+1=5 Colsum[0]= 1+3+1+3=8 Rowsum[1]=3+3+0+2=8 Colsum[1]= 2+3+3+0=8 Rowsum[2]= 1+3+0+2=6 Colsum[2]= 0+0+0+0=0 Rowsum[3]=3+0+0+2=5 Colsum[3]= 1+2+2+2=7 (i,j) के युग्म जैसे कि rowsum[i] < colsum[j]: (0,0), (0,1), (0,3), (2,0), (2,1), (2,3), (3,0), (3,1), (3,3)
इनपुट -
Arr[]= { {1,1,1}, {1,1,1}, {1,1,1} } N=3 आउटपुट - वैध युग्मों की संख्या: 0
व्याख्या -
Rowsum[0]= 1+1+1=3 Colsum[0]= 1+1+1=3 Rowsum[1]= 1+1+1=3 Colsum[1]= 1+1+1=3 Rowsum[2]= 1+1+1=3 Colsum[2]= 1+1+1=3 कोई युग्म संभव नहीं जहां rowsum[i] < colsum[j]
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम यादृच्छिक संख्याओं से आरंभ एक पूर्णांक सरणी Arr[] लेते हैं।
एक वेरिएबल n लेते हैं जो Arr[] की लंबाई स्टोर करता है।
फंक्शन countPairs(int arr[], int n) एक सरणी, उसकी लंबाई को इनपुट के रूप में लेता है और उन युग्मों को लौटाता है जो वैध हैं और वांछित शर्तों को पूरा करते हैं।
हम दो सरणियाँ rowsum[n] और colsum[n] लेते हैं।
मैट्रिक्स को पार करते हैं और arr[i][j] को rowsum[i] और colsum[j] में जोड़कर पंक्ति i और कॉलम j के योग की गणना करते हैं।
अब दो फॉर लूप का उपयोग करके colsum[] और rowsum[] सरणियों को पार करते हैं।
यदि कोई colsum[j] > rowsum[i] है। काउंट बढ़ाते हैं।
काउंट को परिणाम के रूप में लौटाते हैं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int countPairs(int arr[][3], int n){ // युग्मों की गिनती int count = 0; int rowsum[n]={0}; int colsum[n]={0}; int i,j; for (i = 0; i < n; i++){ for (j = 0; j < n; j++){ rowsum[i]+=arr[i][j]; colsum[j]+=arr[i][j]; } } for(i=0;irowsum[i]) { count++; } } return count; } int main(){ int Arr[][3] = { {1,3,5},{2,4,6},{3,5,7} }; int side=3; cout <<endl<<"युग्मों की संख्या: "<< countPairs(Arr, side); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
युग्मों की संख्या: 4