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

C++ में दो दिए गए तत्वों की समान घटनाओं वाले सबएरे की गिनती


हमें पूर्णांकों की एक सरणी arr[] दी गई है। साथ ही दो संख्याएँ A और B। लक्ष्य arr[] के उन सभी सबएरे की गिनती करना है जिनमें सभी में A और B की घटनाएं समान हों। यदि सरणी [1,2,3] है और A=1 और B=2 है। सबएरे होंगे [3], [1,2], [1,2,3]।

उदाहरण सहित समझ

इनपुट - arr[] = { 2, 2, 1, 1, 1, 5 }; A=1, B=5

आउटपुट - दो दिए गए तत्वों की समान घटनाओं वाले सबएरे की संख्या: 4

व्याख्या - सबएरे होंगे: [2], [2], [2,2], [1,5]। पहले तीन में 1 और 5 की 0 घटनाएं हैं, अंतिम में दोनों की 1 घटना है।

इनपुट - arr[] = { 5,3,7,5,3 }; A=1, B=2

आउटपुट - दो दिए गए तत्वों की समान घटनाओं वाले सबएरे की संख्या: 15

व्याख्या - सबएरे होंगे: ( जिनमें 1 और 2 की 0 घटनाएं हैं )

[5], [3], [7], [5], [3] - 5
[5,3], [3,7], [7,5], [5,3] - 4
[5,3,7], [3,7,5], [7,5,3] - 3
[5,3,7,5], [3,7,5,3] - 2
[5,3,5,7,5] - 1
कुल 15 सबएरे जिनमें 1 और 2 दोनों की 0 घटनाएं हैं।

प्रोग्राम में उपयोग किया गया दृष्टिकोण

हम सभी संभावित सबएरे उत्पन्न करने के लिए दो फॉर लूप का उपयोग करके सरणी को ट्रैवर्स करेंगे। i=0 से i<=size-1 और j=i से j<=size-1 तक। बने सबएरे arr[i] से arr[j] के बीच होंगे। प्रत्येक सबएरे में A और B की आवृत्ति गिनें। यदि समान हैं तो काउंट बढ़ाएँ।

  • संख्याओं की एक सरणी arr[] लें।
  • फंक्शन sub_EqualOccurrence(int arr[], int size, int A, int B) सरणी लेता है और A और B की समान संख्या वाले सबएरे की गिनती लौटाता है।
  • प्रारंभिक काउंट 0 लें।
  • दो फॉर लूप का उपयोग करके i=0 से i<=size-1 और j=0 से j<=size-1 तक सरणी को ट्रैवर्स करें।
  • सबएरे arr[i] से arr[j] में A's और B's की संख्या के लिए दो चर total_A, total_B को 0 के रूप में लें।
  • arr[j] की तुलना A और B से करें। यदि arr[j] A या B है तो संबंधित काउंट (total_A या total_B) बढ़ाएँ।
  • यदि total_A == total_B। काउंट बढ़ाएँ। (सबएरे में तत्वों के रूप में A's और B's की समान संख्या है)।
  • दोनों लूप के अंत में, परिणाम के रूप में काउंट लौटाएँ।

उदाहरण

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

int sub_EqualOccurrence(int arr[], int size, int A, int B) {
    int count = 0;
    for (int i = 0; i <= size - 1; i++) {
        int total_A = 0;
        int total_B = 0;
        for (int j = i; j <= size - 1; j++) {
            if (arr[j] == A) {
                total_A++;
            } else if (arr[j] == B) {
                total_B++;
            }
            if (total_A == total_B) {
                count++;
            }
        }
    }
    return count;
}

int main() {
    int arr[] = { 2, 3, 1, 1, 4, 5 };
    int size = sizeof(arr) / sizeof(arr[0]);
    int A = 1, B = 5;
    cout << "Count of subarrays with equal number of occurrences of two given elements are: " << sub_EqualOccurrence(arr, size, A, B);
    return 0;
}

आउटपुट

Count of subarrays with equal number of occurrences of two given elements are: 5
  1. - C++ में दिए गए GCD के बराबर उपसमुच्चयों की संख्या गिनें

    समस्या विवरण एक सरणी arr दी गई है जिसमें धनात्मक संख्याएं हैं और एक सरणी GCD[] जिसमें GCD मान हैं। लक्ष्य arr[] के तत्वों के उन उपसमुच्चयों की संख्या ज्ञात करना है जिनके GCD मान GCD[] में दिए गए हैं। उदाहरण इनपुट arr[] = {10, 5, 6, 3}, GCD[] = {2, 3, 5} आउटपुट दिए गए GCD के बराबर उपसमुच्चयों की सं

  1. - C++ में सरणी तत्वों के औसत की दिए गए संख्या के साथ घटनाओं की गिनती

    समस्या विवरण एक सरणी arr[] दी गई है जिसमें पूर्णांक तत्व हैं और एक पूर्णांक num। लक्ष्य प्रत्येक तत्व arr[i] और num का औसत ज्ञात करना है और उस औसत की मूल सरणी में घटी घटनाओं की संख्या प्रिंट करना है। यदि सरणी arr[] है [5, 2, 3] और num 2 है। औसत होंगे [3, 2, 2] arr[] में घटनाएं [1,1,1] हैं। उदाहरण

  1. मैनहट्टन दूरी के बराबर दूरी वाले पथों की गणना - C++ मैनहट्टन दूरी के बराबर दूरी वाले पथों की गणना - C++

    समस्या विवरण हमें दो बिंदु (x1, y1) और (x2, y2) दिए गए हैं। लक्ष्य उन सभी पथों की गणना करना है जिनकी दूरी इन बिंदुओं के बीच मैनहट्टन दूरी के बराबर हो। मैनहट्टन दूरी MD = |x1 - x2| + |y1 - y2| मान लें A = |x1 - x2|, B = |y1 - y2|। मैनहट्टन दूरी वाले सभी पथों में A क्षैतिज और B लंबवत किनारे होंगे। सं