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

जोड़े (पी, क्यू) की गणना करें जैसे कि पी कम से कम क्यू बार सरणी में होता है और क्यू सी ++ में कम से कम पी बार होता है

हमें सकारात्मक पूर्णांकों की एक सरणी दी गई है। लक्ष्य arr[] के तत्वों के जोड़े की संख्या का पता लगाना है, जैसे कि जोड़े में तत्व (p, q) होते हैं जहां p कम से कम q बार के लिए सरणी में होता है और q कम से कम p बार के लिए सरणी में होता है।

आइए उदाहरणों से समझते हैं।

इनपुट - int arr[] ={ 3, 3, 3, 5, 5, 6, 6}

आउटपुट − एक सरणी में युग्मों की संख्या जैसे कि एक की आवृत्ति कम से कम दूसरे का मान हो − 1

स्पष्टीकरण - एक सरणी में मान्य जोड़े जहां p q बार आता है और q p बार होता है (3, 3) क्योंकि 3 एक सरणी में 3 बार आ रहा है। तो केवल एक वैध जोड़ी है इसलिए गिनती 1 है।

इनपुट - int arr[] ={ 3, 3, 3, 3, 3, 5, 5, 5, 6, 6}

आउटपुट − एक सरणी में युग्मों की संख्या जैसे कि एक की आवृत्ति कम से कम दूसरे का मान हो − 1

स्पष्टीकरण - एक सरणी में मान्य जोड़े जहां p बार q बार आता है और q बार p बार आता है (3, 3), (5, 5) और (3, 5) क्योंकि 3 5 बार हो रहा है और 5 एक सरणी में 3 बार आ रहा है . तो तीन वैध जोड़े हैं इसलिए गिनती 3 है।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • पूर्णांक तत्वों की एक सरणी इनपुट करें और एक सरणी के आकार की गणना करें और आगे की प्रक्रिया के लिए डेटा को फ़ंक्शन में पास करें

  • p और q की घटनाओं को संग्रहीत करने के लिए एक अस्थायी चर गणना घोषित करें

  • वेक्टर प्रकार का एक चर vec और unordered_map प्रकार का um बनाएं

  • 0 से एक सरणी के आकार तक के लिए लूप प्रारंभ करें

  • लूप के अंदर, um[arr[i]] को 1 से सेट करें और जांचें कि क्या उम 1 है तो वेक्टर में arr[i] पुश करें

  • 0 से एक वेक्टर के आकार तक के लिए एक और लूप शुरू करें और IF um[vec[i]

  • लूप j के अंदर IF um[j]>=vec[i] चेक करें, फिर गिनती को 1 से बढ़ाएँ

  • गिनती वापस करें

  • परिणाम प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int pair_count(int arr[], int len){
   int count = 0;
   vector<int> vec;
   unordered_map<int, int> um;
   for (int i = 0; i < len; i++){
      um[arr[i]]++;
      if (um[arr[i]] == 1){
         vec.push_back(arr[i]);
      }
   }
   for (int i = 0; i < vec.size(); i++){
      if (um[vec[i]] < vec[i]){
         continue;
      }
      else if (um[vec[i]] == vec[i]){
         count++;;
      }
      else{
         count++;
         for (int j = vec[i] + 1; j <= um[vec[i]]; j++){
            if (um[j] >= vec[i]){
               count++;
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 1, 1, 1, 5, 5, 1};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of pairs (p, q) such that p occurs in array at least q times and q occurs at least
p times are: "<<pair_count(arr, size);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of pairs (p, q) such that p occurs in array at least q times and q occurs at least p times are: 1

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

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

  1. एक सरणी में जोड़े की संख्या पाएं जैसे कि उनका एक्सओआर 0 सी ++ का उपयोग कर रहा है।

    मान लीजिए हमारे पास n तत्वों की एक सरणी है; हमें सरणी में ऐसे कई जोड़े खोजने हैं जिनका XOR 0 होगा। युग्म (x, y) जिसका XOR 0 है, तो x =y है। इसे हल करने के लिए हम सरणी को सॉर्ट कर सकते हैं, फिर यदि दो लगातार तत्व समान हैं, तो गिनती बढ़ाएं। यदि सभी तत्व समान हैं, तो अंतिम गणना नहीं की जा सकती है। उस स

  1. एक सरणी में सभी जोड़े (ए, बी) खोजें जैसे कि सी ++ में% बी =के

    मान लीजिए कि हमारे पास एक सरणी ए है, उस सरणी से, हमें सभी जोड़े (ए, बी) प्राप्त करना है जैसे कि ए% बी =के। मान लीजिए कि सरणी A =[2, 3, 4, 5, 7] और k =3 है, तो जोड़े (7, 4), (3, 4), (3, 5), (3, 7) हैं। इसे हल करने के लिए, हम सूची को देखेंगे और जांचेंगे कि दी गई शर्त संतोषजनक है या नहीं। उदाहरण #inc