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

एक सरणी में चार तत्व a, b, c और d खोजें जैसे कि a+b =c+d C++ . में

मान लीजिए कि हमारे पास पूर्णांकों की एक सूची है। हमारा काम चार अलग-अलग पूर्णांकों को दो जोड़े जैसे (ए, बी) और (सी, डी) के रूप में खोजना है, जैसे कि ए + बी =सी + डी। यदि एक से अधिक उत्तर हैं, तो केवल एक ही प्रिंट करें। मान लीजिए कि सरणी तत्व इस प्रकार हैं:ए =[7, 5, 9, 3, 6, 4, 2], तो जोड़े (7, 3) और (6, 4) हो सकते हैं

यहां हम हैशिंग तकनीक का उपयोग करेंगे। हम योग को कुंजी के रूप में जोड़ी के रूप में हैश तालिका में मान के रूप में उपयोग करते हैं। इस समस्या को हल करने के लिए हमें इन चरणों का पालन करना होगा।

  • 0 से n-1 की सीमा में i के लिए
    • जे के लिए i + 1 से n – 1 की श्रेणी में, करें
      • राशि ज्ञात करें
      • यदि हैश तालिका में पहले से योग है, तो पिछली जोड़ी और वर्तमान जोड़ी को प्रिंट करें
      • अन्यथा, हैश तालिका अपडेट करें।

उदाहरण

#include<iostream>
#include<map>
using namespace std;
bool getTwoPairs(int arr[], int n) {
   map<int, pair<int, int> > hash_table;
   for (int i = 0; i < n; ++i) {
      for (int j = i + 1; j < n; ++j) {
         int sum = arr[i] + arr[j];
         if (hash_table.find(sum) == hash_table.end())
            hash_table[sum] = make_pair(i, j);
         else {
            pair<int, int> pp = hash_table[sum];
            cout << "(" << arr[pp.first] << " + " << arr[pp.second] << ") = (" << arr[i] << " + " << arr[j] << ")";
            return true;
         }
      }
   }
   cout << "No pairs found";
   return false;
}
int main() {
   int arr[] = {7, 5, 9, 3, 6, 4, 2};
   int n = sizeof arr / sizeof arr[0];
   cout << "The pairs are: ";
   getTwoPairs(arr, n);
}

आउटपुट

The pairs are: (7 + 4) = (5 + 6)

  1. सर्कुलर सरणी में अधिकतम योग जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं

    इस समस्या में, हमें एक वृत्ताकार सरणी cirArr[] दी गई है। हमारा काम सर्कुलर सरणी में अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं। समस्या का विवरण वृत्ताकार सरणी के लिए, हमें सरणी के तत्वों का अधिकतम योग ज्ञात करना होगा जैसे कि आसन्न तत्वों को नहीं लि

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ में x और उसके अंकों का योग दिए गए n के बराबर हो

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक और मान x ज्ञात करना होता है, जैसे कि x का x + अंकों का योग दी गई संख्या n के समान हो। मान लीजिए n का मान 21 है। यह प्रोग्राम एक संख्या x =15, 15 + अंकों का योग 15, यानी 15 + 1 + 5 =21 =n के रूप में लौटाएगा। इस समस्या को हल करने के लिए

  1. C++ में दिए गए सरणी के तत्वों के भाज्य का GCD ज्ञात कीजिए

    मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी ए है। हमें सरणी के सभी तत्वों के भाज्य का GCD ज्ञात करना है। मान लीजिए कि तत्व {3, 4, 8, 6} हैं, तो भाज्य का GCD 6 है। यहाँ हम ट्रिक देखेंगे। चूँकि दो संख्याओं का GCD वह सबसे बड़ी संख्या है, जो दोनों संख्याओं को विभाजित करती है, तो दो संख्याओं के भाज्य