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

C++ दिए गए सूचकांक के बाईं ओर इकाई और शून्य की संख्या का उत्तर देने के लिए प्रश्न

दिए गए सरणी में प्रश्नों के उत्तर देने के लिए किसी समस्या पर चर्चा करें। उदाहरण के लिए, प्रत्येक क्वेरी इंडेक्स के लिए, हमें इंडेक्स के बाईं ओर वाले और शून्य की संख्या ज्ञात करनी होगी।

Input: arr[ ] = { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0}, queries[ ] = { 2, 4, 1, 0, 5 }
Output:
query 1: zeros = 1,ones = 1
query 2: zeros = 1,ones = 3
query 3: zeros = 1,ones = 0
query 4: zeros = 0,ones = 0
query 5: zeros = 2,ones = 3

Input: arr[ ] = { 0, 0, 1, 1, 1, 0, 1, 0, 0, 1 }, queries[ ] = { 3, 2, 6 }
Output:
query 1: zeros = 2,ones = 1
query 2: zeros = 2,ones = 0
query 3: zeros = 3,ones = 3

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

निष्पक्ष दृष्टिकोण

इस समस्या का सरल समाधान है क्वेरी के सूचकांक में सरणी के माध्यम से जाना और प्रत्येक तत्व की जाँच करना; यदि यह 0 है, तो शून्य काउंटर को 1 से बढ़ाएँ, काउंटर को 1 से बढ़ाएँ।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int main(){
    int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0};
    int queries[] =  { 2, 4, 1, 0, 5 };
    int qsize = sizeof(queries) / sizeof(queries[0]);
    int zeros=0,ones=0;
    // loop for running each query.
    for(int i = 0;i<qsize;i++){
        //counting zeros and ones
        for(int j = 0;j<queries[i];j++){
            if(nums[j]==0)
            zeros++;
            else
            ones++;
        }
        cout << "\nquery " << i+1 << ": zeros = " << zeros << ",ones = " << ones;
        zeros=0;
        ones=0;
    }
    return 0;
}

आउटपुट

query 1: zeros = 1,ones = 1
query 2: zeros = 2,ones = 2
query 3: zeros = 0,ones = 1
query 4: zeros = 0,ones = 0
query 5: zeros = 2,ones = 3

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

पिछले दृष्टिकोण में, हर बार, हम 0वीं अनुक्रमणिका से नए प्रश्नों के लिए इकाई और शून्य की गणना कर रहे थे।

एक और तरीका यह है कि प्रत्येक इंडेक्स के बाईं ओर मौजूद शून्य और शून्य की गणना करें, उन्हें एक सरणी में संग्रहीत करें, और क्वेरी में लिखे गए इंडेक्स के अनुसार उत्तर दें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int main(){
    int nums[] = {1, 0, 0, 1, 1, 0, 0, 1, 0, 0};
    int queries[] =  { 2, 4, 1, 0, 5 };
    int n = sizeof(nums) / sizeof(nums[0]);
    int arr[n][2];
    int zeros = 0, ones = 0;
    // traverse through the nums array.
    for (int i = 0; i < n; i++) {
        // store the number of zeros and ones in arr.
        arr[i][0] = zeros;
        arr[i][1] = ones;
        // increment variable according to condition
        if (nums[i]==0)
            zeros++;
        else
            ones++;
    }
    int qsize = sizeof(queries) / sizeof(queries[0]);
        for (int i = 0; i < qsize; i++)
        cout << "\nquery " << i+1 << ": zeros = " << arr[queries[i]][0] << ",ones ="    << arr[queries[i]][1];
    return 0;
}

आउटपुट

query 1: zeros = 1,ones =1
query 2: zeros = 2,ones =2
query 3: zeros = 0,ones =1
query 4: zeros = 0,ones =0
query 5: zeros = 2,ones =3

निष्कर्ष

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


  1. C++ में n के निकटतम और m से विभाज्य संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास दो पूर्णांक n और m हैं। हमें n के निकटतम संख्या ज्ञात करनी है और m से भाग देना है। यदि ऐसी एक से अधिक संख्याएँ हैं, तो वह संख्या दर्शाइए जिसका अधिकतम निरपेक्ष मान है। यदि n, m से पूर्ण रूप से विभाज्य है, तो n लौटाएँ। तो अगर n =13, m =4, तो आउटपुट 12 है। इसे हल करने के लिए, हम

  1. दूसरी संख्या ज्ञात कीजिए जब C++ में LCM और HCF दिए गए हों

    मान लीजिए कि हमारे पास एक संख्या ए है, और एलसीएम और जीसीडी मान हैं, हमें एक और संख्या बी ढूंढनी है। यदि ए =5, एलसीएम 25 है, एचसीएफ =4 है, तो दूसरी संख्या 4 होगी। हम जानते हैं कि - $$𝐴∗𝐵=𝐿𝐶𝑀∗𝐻𝐶𝐹$$ $$𝐵=\frac{LCM*HCF}{A}$$ उदाहरण #include <iostream> using namespace std; int anotherNumb

  1. सी ++ प्रोग्राम किसी दिए गए नंबर के अंकों का योग करने के लिए

    C++ भाषा में अंकों के योग की गणना करने के लिए यहां एक उदाहरण दिया गया है, उदाहरण #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {