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

C++ प्रोग्राम: सशर्त ऑपरेटर के बिना सरणी से सबसे बड़ा तत्व ज्ञात करना

मान लें हमारे पास कुछ तत्वों के साथ एक सरणी A है। हमें सरणी A में सबसे बड़ा तत्व ज्ञात करना है, लेकिन प्रतिबंध यह है कि हम किसी भी सशर्त ऑपरेटर का उपयोग नहीं कर सकते। इसलिए यदि A = [12, 63, 32, 24, 78, 56, 20], तो अधिकतम तत्व 78 होगा।

इस समस्या को हल करने के लिए, हम बिटवाइज AND ऑपरेशन का उपयोग करेंगे। पहले हम सरणी में एक अतिरिक्त तत्व INT_MAX (जहां सभी बिट 1 हैं) डालेंगे। फिर हम सरणी से किसी भी जोड़ी का अधिकतम AND मान खोजने का प्रयास करेंगे। यह प्राप्त अधिकतम मान INT_MAX और मूल सरणी के सबसे बड़े तत्व का AND मान होगा, और यही परिणाम होगा।

उदाहरण

#include <iostream>
#include <vector>
using namespace std;

int checkBit(int pattern, vector arr, int n) {
    int count = 0;
    for (int i = 0; i < n; i++)
        if ((pattern & arr[i]) == pattern)
            count++;
    return count;
}

int findLargestElement(int arr[], int n) {
    vector elements_vector(arr, arr + n);
    elements_vector.push_back(INT_MAX);
    n++;
    int res = 0;
    for (int bit = 31; bit >= 0; bit--) {
        int count = checkBit(res | (1 << bit), elements_vector, n);
        if ((count | 1) != 1)
            res |= (1 << bit);
    }
    return res;
}

int main() {
    int arr[] = {12, 63, 32, 24, 78, 56, 20};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Largest element is: " << findLargestElement(arr, n);
}

आउटपुट

Largest element is: 78
  1. - C++ का उपयोग करके सरणी में ऐसा तत्व खोजें जिसके बाएं और दाएं उपसरणी का योग समान हो

    मान लीजिए हमारे पास एक सरणी A है, जिसमें n तत्व हैं। हमारा कार्य सरणी A को दो उपसरणी में विभाजित करना है, ताकि प्रत्येक उपसरणी का योग समान हो। मान लीजिए सरणी A = [2, 3, 4, 1, 4, 5], आउटपुट 1 है, इसलिए 1 से पहले और बाद की उपसरणी ली जाती हैं: [2, 3, 4], और [4, 5]। इस समस्या को हल करने के लिए, हम पहले

  1. - C++ में सरणी के प्रत्येक तत्व का सरपासर काउंट खोजें

    मान लीजिए एक सरणी A दी गई है। हमें उस सरणी में प्रत्येक तत्व के सरपासर की संख्या ज्ञात करनी है। सरपासर वे बड़े तत्व हैं जो वर्तमान तत्व के दाईं ओर सरणी में मौजूद हैं। मान लीजिए A = {2, 7, 5, 3, 0, 8, 1}, सरपासर हैं {4, 1, 1, 1, 2, 0, 0}, इसलिए 2 के दाईं ओर 4 संख्याएं हैं जो 2 से बड़ी हैं, और इसी नि

  1. - C++ में सरणी का सबसे बड़ा एलिमेंट खोजने का प्रोग्राम

    एक सरणी में कई एलिमेंट्स होते हैं और सरणी में सबसे बड़ा एलिमेंट वह होता है जो अन्य एलिमेंट्स से बड़ा होता है। उदाहरण के लिए। 5 1 7 2 4 उपरोक्त सरणी में, 7 सबसे बड़ा एलिमेंट है और यह इंडेक्स 2 पर है। सरणी का सबसे बड़ा एलिमेंट खोजने का एक प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream>