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

C++ में दिए गए योग वाले सभी युग्म प्रिंट करें


इस समस्या में, हमें पूर्णांकों की एक सरणी और एक पूर्णांक योग दिया गया है और हमें उन सभी पूर्णांक युग्मों को प्रिंट करना है जिनका योग योग मान के बराबर है।

समस्या को समझने के लिए एक उदाहरण लेते हैं :

इनपुट - सरणी = {1, 6, -2, 3} योग = 4

आउटपुट - (1, 3) , (6, -2)

यहां, हमें दिए गए योग मान वाले युग्म चाहिए।

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

उदाहरण

यह प्रोग्राम समाधान को चित्रित करेगा -

#include <iostream> using namespace std; int printPairsWithSum(int arr[], int n, int sum){    int count = 0;    for (int i = 0; i < n; i++)       for (int j = i + 1; j < n; j++)          if (arr[i] + arr[j] == sum)             cout<<"[ "<<arr[i]<<", "<<arr[j]<<" ]\n"; } int main(){    int arr[] = {1, 6, -2, 3};    int n = 4;    int sum = 4;    cout<<"Pairs with Sum "<<sum<<" are :\n";    printPairsWithSum(arr, n, sum);    return 0; }

आउटपुट

Pairs with Sum 4 are : [ 1, 3 ] [ 6, -2 ]

यह विधि समझने में आसान है लेकिन काफी कुशल नहीं है। दूसरा तरीका हैशिंग का उपयोग करना होगा।

हम एक हैश टेबल आरंभ करेंगे और सरणी को पार करेंगे और इसमें युग्म ढूंढेंगे। मिलान पर, हम सरणी प्रिंट करेंगे :

उदाहरण

निम्नलिखित प्रोग्राम आपको एल्गोरिदम को बेहतर ढंग से समझने में मदद करेगा -

#include <bits/stdc++.h> using namespace std; void printPairsWithSum(int arr[], int n, int sum){    unordered_map<int, int> pair;    for (int i = 0; i < n; i++) {       int rem = sum - arr[i];       if (pair.find(rem) != pair.end()) {          int count = pair[rem];          for (int j = 0; j < count; j++)          cout<<"["<<rem<<", "<<arr[i]<<" ]\n";       }       pair[arr[i]]++;    } } int main(){    int arr[] = {1, 6, -2, 3};    int n = 4;    int sum = 4;    cout<<"The pair with sum is \n";    printPairsWithSum(arr, n, sum);    return 0; }

आउटपुट

Pairs with Sum 4 are : [ 1, 3 ] [ 6, -2 ]

  1. - C++ में दिए गए योग वाले सभी ट्रिपलेट प्रिंट करें

    इस समस्या में, हमें अद्वितीय पूर्णांकों की एक सरणी और एक योग दिया गया है। और हमें उन ट्रिपलेट को ढूंढना है जो समान योग बना सकते हैं। समस्या को हल करने के लिए एक उदाहरण लेते हैं - इनपुट: सरणी = {0 , 2 , -1 , 1, -2} योग = 1 आउटपुट: 1 2 -2 0 2 -1 इस समस्या को हल करने के लिए, हम उन सभी ट्रिपलेट को ढूंढे

  1. - C++ में दिए गए स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करने का प्रोग्राम

    इस ट्यूटोरियल में, हम दिए गए स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करने के प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक स्ट्रिंग या कैरेक्टर्स का ऐरे दिया जाएगा। हमारा कार्य उस विशेष स्ट्रिंग के सभी सबस्ट्रिंग प्रिंट करना है। उदाहरण #include using namespace std; // सभी सबस्ट्रिंग प्रिंट करना void pr

  1. - C++ में दी गई रेंज में सभी पालिंड्रोम प्रिंट करने का प्रोग्राम

    इस ट्यूटोरियल में, हम दी गई रेंज में सभी पालिंड्रोम प्रिंट करने के प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें वह गणितीय रेंज दी जाएगी जिसमें पालिंड्रोम ढूंढने हैं। हमारा कार्य उस रेंज में सभी पालिंड्रोम ढूंढना और उन्हें वापस प्रिंट करना है। उदाहरण #include 0; i /= 10) rev = rev*10 + i%10;