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

C प्रोग्राम में समान संख्या में 1 और 0 के साथ अगली बड़ी संख्या का बाइनरी प्रतिनिधित्व


समस्या विवरण

मान लीजिए हमारे पास एक बाइनरी संख्या है, जो संख्या n का प्रतिनिधित्व करती है। हमें उस संख्या का बाइनरी प्रतिनिधित्व ढूंढना है जो सबसे छोटी लेकिन n से बड़ी हो, और जिसमें समान संख्या में 0 और 1 हों। इसलिए यदि संख्या 1011 (दशमलव में 11) है, तो आउटपुट 1101 (13) होगा। इस समस्या को अगले-क्रमपरिवर्तन गणना का उपयोग करके पाया जा सकता है।

एल्गोरिदम

nextBin(bin)
शुरुआत
    len := bin की लंबाई
    i को len-2 से 1 तक नीचे की ओर लूप
        यदि bin[i] 0 है और bin[i+1] = 1, तो
            bin[i] और bin[i+1] को एक्सचेंज करें
            ब्रेक
        अंत यदि
    अंत लूप
    यदि i = 0, तो कोई परिवर्तन नहीं, वापस करें
    अन्यथा j := i + 2, k := len - 1
    जब तक j < k लूप
        यदि bin[j] 1 है और bin[k] 0 है, तो
            bin[j] और bin[k] को एक्सचेंज करें
            j और k को 1 से बढ़ाएं
        अन्यथा यदि bin[i] 0 है, तो
            ब्रेक
        अन्यथा
            j को 1 से बढ़ाएं
        अंत यदि
    अंत लूप
    bin वापस करें
अंत

C++ प्रोग्राम उदाहरण

#include <iostream>
using namespace std;

string nextBinary(string bin) {
    int len = bin.size();
    int i;
    for (int i = len-2; i >= 1; i--) {
        if (bin[i] == '0' && bin[i+1] == '1') {
            char ch = bin[i];
            bin[i] = bin[i+1];
            bin[i+1] = ch;
            break;
        }
    }
    if (i == 0)
        return "कोई बड़ी संख्या मौजूद नहीं";
    int j = i+2, k = len-1;
    while (j < k) {
        if (bin[j] == '1' && bin[k] == '0') {
            char ch = bin[j];
            bin[j] = bin[k];
            bin[k] = ch;
            j++;
            k--;
        }
        else if (bin[i] == '0')
            break;
        else
            j++;
    }
    return bin;
}

int main() {
    string bin = "1011";
    cout << "अगली बड़ी संख्या का बाइनरी मान = " << nextBinary(bin);
}

आउटपुट

अगली बड़ी संख्या का बाइनरी मान = 1101
  1. - पायथन में x, y, z अक्षरों की i, j, k संख्या वाले सबसीक्वेंस की संख्या ढूंढने का प्रोग्राम

    मान लीजिए हमारे पास x, y और z के साथ एक स्ट्रिंग s है, हमें उन सबसीक्वेंस की संख्या ढूंढनी है जिनमें i संख्या के x कैरेक्टर्स हैं, उसके बाद j संख्या के y कैरेक्टर्स और उसके बाद k संख्या के z कैरेक्टर्स हैं जहां i, j, k ≥ 1। तो, अगर इनपुट है s = xxyz, तो आउटपुट 3 होगा, क्योंकि हम दो xyz और एक xxyz

  1. - बाइनरी प्रतिनिधित्व पैलिंड्रोम है या नहीं जांचने का पायथन प्रोग्राम

    समस्या विवरण यहां हम विभिन्न पायथन इनबिल्ट फंक्शन का उपयोग करते हैं। सबसे पहले हम bin() का उपयोग करके संख्या को उसके बाइनरी रूप में बदलते हैं, फिर बाइनरी स्ट्रिंग को उल्टा करते हैं और मूल से तुलना करते हैं। यदि मेल खाता है तो पैलिंड्रोम अन्यथा नहीं। उदाहरण इनपुट: 5 आउटपुट: पैलिंड्रोम व्याख्या 5 क

  1. - दो संख्याओं के बाइनरी प्रतिनिधित्व एनाग्राम हैं या नहीं जांचने का पायथन प्रोग्राम

    समस्या विवरण दो संख्याएं दी गई हैं। हमारा कार्य यह जांचना है कि क्या वे बाइनरी प्रतिनिधित्व में एक-दूसरे के एनाग्राम हैं या नहीं। हम इस समस्या को पायथन में Counter(iterable) विधि और डिक्शनरी तुलना का उपयोग करके जल्दी हल कर सकते हैं। उदाहरण इनपुट: a = 8, b = 16 आउटपुट: हां दोनों संख्याओं के बाइनरी प