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

C प्रोग्राम में ऐरे में अधिकतम AND मान वाली जोड़ी प्रिंट करना


समस्या के अनुसार हमें n पॉजिटिव इंटीजर्स का एक ऐरे दिया गया है, हमें ऐरे से अधिकतम AND मान वाली जोड़ी ढूंढनी है।

उदाहरण

इनपुट: arr[] = { 4, 8, 12, 16 }
आउटपुट: pair = 8 12
अधिकतम AND मान = 8

इनपुट: arr[] = { 4, 8, 16, 2 }
आउटपुट: pair = No possible AND
अधिकतम AND मान = 0

अधिकतम AND मान ढूंढना ऐरे में अधिकतम AND मान ढूंढने के समान है। प्रोग्राम को उन एलिमेंट्स की जोड़ी ढूंढनी होगी जिनके परिणामस्वरूप प्राप्त AND मान मिले। एलिमेंट्स ढूंढने के लिए, बस पूरे ऐरे को ट्रैवर्स करें और प्रत्येक एलिमेंट का प्राप्त अधिकतम AND मान (परिणाम) के साथ AND मान ढूंढें और यदि arr[i] & result == result, तो इसका मतलब है कि arr[i] वह एलिमेंट है जो अधिकतम AND मान उत्पन्न करेगा। इसके अलावा, यदि अधिकतम AND मान (परिणाम) शून्य है तो हमें उस मामले में "Not possible" प्रिंट करना चाहिए।

एल्गोरिदम

int checkBit(int pattern, int arr[], int n)
शुरुआत
चरण 1: count को 0 घोषित और इनिशियलाइज़ करें
चरण 2: i = 0 से n तक i++ लूप
   यदि (pattern & arr[i]) == pattern तो count++
लूप समाप्त
चरण 3: count रिटर्न करें
समाप्त

int maxAND(int arr[], int n)
शुरुआत
चरण 1: res = 0 और count घोषित और इनिशियलाइज़ करें
चरण 2: bit = 31 से 0 तक bit-- लूप
   count = checkBit(res | (1 << bit), arr, n)
   यदि count >= 2 तो res |= (1 << bit)
   यदि res == 0 तो "no possible AND" प्रिंट करें
   अन्यथा "Pair with maximum AND= " प्रिंट करें
   count = 0
   i = 0 से n तक && count < 2 तक i++ लूप
      यदि (arr[i] & res) == res तो count++, arr[i] प्रिंट करें
   लूप समाप्त
लूप समाप्त
res रिटर्न करें
समाप्त

उदाहरण

#include <stdio.h>
int checkBit(int pattern, int arr[], int n){
    int count = 0;
    for (int i = 0; i < n; i++)
        if ((pattern & arr[i]) == pattern)
            count++;
    return count;
}
// अधिकतम AND मान वाली जोड़ी ढूंढने का फंक्शन
int maxAND(int arr[], int n){
    int res = 0, count;
    for (int bit = 31; bit >= 0; bit--) {
        count = checkBit(res | (1 << bit), arr, n);
        if (count >= 2)
            res |= (1 << bit);
    }
    if (res == 0)
        printf("no possible and\n");
    else {
        printf("Pair with maximum AND= ");
        count = 0;
        for (int i = 0; i < n && count < 2; i++) {
            if ((arr[i] & res) == res) {
                count++;
                printf("%d ", arr[i]);
            }
        }
    }
    return res;
}
int main(int argc, char const *argv[]){
    int arr[] = {5, 6, 2, 8, 9, 12};
    int n = sizeof(arr)/sizeof(arr[0]);
    int ma = maxAND(arr, n);
    printf("\nThe maximum AND value= %d ", ma);
    return 0;
}

आउटपुट

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

Pair with maximum AND= 8 9
The maximum AND value= 8

  1. C प्रोग्राम में दिए गए आकार का अधिकतम योग वाला वर्ग उप-मैट्रिक्स प्रिंट करें C प्रोग्राम में दिए गए आकार का अधिकतम योग वाला वर्ग उप-मैट्रिक्स प्रिंट करें

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

  1. C प्रोग्राम में O(n) समय और O(1) स्पेस में ऐरे का बायां रोटेशन प्रिंट करें C प्रोग्राम में O(n) समय और O(1) स्पेस में ऐरे का बायां रोटेशन प्रिंट करें

    समस्या विवरण हमें कुछ आकार n का एक ऐरे और कई पूर्णांक मान दिए गए हैं, हमें दिए गए इंडेक्स k से ऐरे को रोटेट करना होगा। उदाहरण इनपुट: arr[] = {1, 2, 3, 4, 5} K1 = 1, K2 = 3, K3 = 6 आउटपुट: 2 3 4 5 1 4 5 1 2 3 2 3 4 5 1 एल्गोरिदम शुरुआत चरण 1: void leftRotate(int arr[], int n, int k) फंक्शन घोषित क

  1. C प्रोग्राम में ऐरे में तत्वों की अंतिम घटना को सापेक्ष क्रम में प्रिंट करें C प्रोग्राम में ऐरे में तत्वों की अंतिम घटना को सापेक्ष क्रम में प्रिंट करें

    समस्या विवरण तत्वों के साथ एक ऐरे a[] दिया गया है और कार्य सूची में दिए गए तत्वों की अंतिम घटनाओं को प्रिंट करना है। यहां हमें न केवल डुप्लिकेट तत्वों को हटाना है बल्कि हमें ऐरे में तत्वों की घटनाओं के क्रम को भी बनाए रखना है जैसा कि वे अंतिम बार हुए हैं। उदाहरण इनपुट: a[] = {4,2,2,4,1,5,1} आउटपुट