Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ का उपयोग करके मैट्रिक्स में दिए गए योग के साथ युग्म खोजें

इस लेख में, हम दिए गए मैट्रिक्स में दिए गए योग के साथ एक जोड़ी खोजने के कार्यक्रम पर चर्चा करेंगे। उदाहरण के लिए -

Input : matrix[n][m] = { 
   { 4, 6, 4, 65 }, 
   { 56, 1, 12, 32 },
   { 4, 5, 6, 44 },
   { 13, 9, 11, 25 } 
}, SUM = 20

Output : Pair exists.
Explanation : Sum = 20 is equal to the sum of numbers 9 and 11 which exists in the matrix.

Input : matrix[n][m] = { 
   { 5, 7, 3, 45 },  
   { 63, 5, 3, 7 },  
   { 11, 6, 9, 5 },
   { 8, 6, 14, 15 } 
}, SUM = 13
Output : Pair does not exist.
Explanation : No pair exists in the matrix whose sum is equal to 7.

समाधान खोजने के लिए दृष्टिकोण

अब हम उपरोक्त समस्या का समाधान खोजने के लिए दो अलग-अलग तरीकों की व्याख्या करेंगे।

ब्रूट-फोर्स अप्रोच

दिए गए मैट्रिक्स में प्रत्येक जोड़ी को ध्यान में रखते हुए और यह जांचना कि क्या जोड़ी का योग दिए गए एसयूएम के बराबर है, यदि हां, तो "जोड़ी मौजूद है" प्रिंट करें; अन्यथा, "जोड़ी मौजूद नहीं है" प्रिंट करें। इस दृष्टिकोण को लागू करना बहुत सरल है, लेकिन यह समय की जटिलता को O((N*M)2) तक बढ़ा देगा।

कुशल दृष्टिकोण

यह प्रोग्राम सभी मैट्रिक्स तत्वों को स्टोर करने के लिए हैश का उपयोग करके कुशल हो सकता है और फिर मैट्रिक्स के माध्यम से पार कर सकता है और जांच सकता है कि [एसयूएम और (इंडेक्स एलिमेंट)] का अंतर बराबर है या नहीं। यदि हाँ, तो "मौजूद" प्रिंट करें और प्रोग्राम से बाहर निकलें। यदि नहीं, तो प्रिंट को पार करने के बाद, "मौजूद नहीं है।"

उदाहरण

#include <bits/stdc++.h>
using namespace std;

#define n 4
#define m 4

int main() {
   int matrix[n][m] = { 
      { 5,7, 3,45 },
      { 63, 5, 3, 7 },
      { 11, 6, 9, 5 },
      { 8, 6, 14, 15 } 
   };

   int sum = 7;
   unordered_set<int> hash;

   for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
         if (hash.find(sum - matrix[i][j]) != hash.end()) {
            cout << "Pair exists." << endl;
            return 0;
         } else {
            hash.insert(matrix[i][j]);
         }
      }
   }

   cout << "Pair does not exist." << endl;
   return 0;
}

आउटपुट

Pair does not exist.

उपरोक्त कोड की व्याख्या

  • 2-डी सरणी घोषित करना और उसमें तत्वों को संग्रहीत करना।
  • अगर (योग-मैट्रिक्स[i][j]) !=हैश.एंड ()।
  • अगर शर्त पूरी होती है, तो "जोड़ी मौजूद है" प्रिंट करें और मुख्य फ़ंक्शन से वापस आएं।
  • अन्यथा, सरणी को पार करते रहें और अंत में "जोड़ी मौजूद नहीं है" प्रिंट करें।

निष्कर्ष

इस लेख में, हमने मैट्रिक्स या 2-डी सरणी में दिए गए योग के साथ एक जोड़ी खोजने पर चर्चा की; हमने इस समस्या को हल करने के लिए ब्रूट-फोर्स दृष्टिकोण और एक कुशल दृष्टिकोण पर चर्चा की। हमने इस समस्या को हल करने के लिए C++ प्रोग्राम पर चर्चा की। हालाँकि, हम इस प्रोग्राम को किसी अन्य भाषा जैसे C, Java, Python, आदि में लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।


  1. C++ में संतुलित BST में दिए गए योग के साथ एक युग्म खोजें

    मान लीजिए कि हमारे पास एक संतुलित बाइनरी सर्च ट्री और एक लक्ष्य योग है, हमें एक ऐसी विधि को परिभाषित करना होगा जो यह जांचती है कि यह योग के साथ एक जोड़ी लक्ष्य योग के बराबर है या नहीं। इस मामले में। हमें यह ध्यान रखना होगा कि बाइनरी सर्च ट्री अपरिवर्तनीय है। तो, अगर इनपुट पसंद है तो आउटपुट होगा

  1. C++ में दिए गए अंतर के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y के बीच का अंतर दिए गए अंतर d के समान हो। मान लीजिए कि तत्वों की एक सूची A =[10, 15, 26, 30, 40, 70] की तरह है, और दिया गया अंतर 30 है, तो जोड़ी होगी (10, 40) और (30, 70) इस समस्या को

  1. Numpy का उपयोग करके किसी दिए गए मैट्रिक्स के सभी तत्वों का योग कैसे प्राप्त करें?

    इस कार्यक्रम में, हम numpy लाइब्रेरी में योग () फ़ंक्शन का उपयोग करके एक numpy मैट्रिक्स की सभी शर्तों को जोड़ देंगे। हम पहले एक यादृच्छिक संख्यात्मक मैट्रिक्स बनाएंगे और फिर, हम सभी तत्वों का योग प्राप्त करेंगे। एल्गोरिदम Step 1: Import numpy. Step 2: Create a random m×n matrix using the rand