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

लगातार 1's के बिना 1 से n बिट बाइनरी संख्याएं

इस समस्या में हमें उन बाइनरी संख्याओं को ढूंढना है जिनमें लगातार 1's नहीं हैं। 3-बिट बाइनरी स्ट्रिंग में, तीन बाइनरी संख्याएं 011, 110, 111 हैं जिनमें लगातार 1's हैं, और पांच संख्याएं ऐसी हैं जिनमें लगातार 1's नहीं हैं। इसलिए 3-बिट संख्याओं के लिए इस एल्गोरिदम को लागू करने पर उत्तर 5 होगा।

यदि a[i] i बिट्स वाली उन बाइनरी संख्याओं का समुच्चय है जिनमें कोई लगातार 1's नहीं हैं, और b[i] i बिट्स वाली उन बाइनरी संख्याओं का समुच्चय है जिनमें लगातार 1's हैं, तो निम्न पुनरावृत्ति संबंध हैं:

a[i] := a[i - 1] + b[i - 1]
b[i] := a[i - 1]

इनपुट

यह एल्गोरिदम बाइनरी संख्या के लिए बिट्स की संख्या लेता है। मान लीजिए इनपुट 4 है।

आउटपुट

यह उन बाइनरी स्ट्रिंग्स की संख्या लौटाता है जिनमें लगातार 1's नहीं हैं।

यहां परिणाम 8 है। (8 बाइनरी स्ट्रिंग्स हैं जिनमें लगातार 1's नहीं हैं)

एल्गोरिदम

countBinNums(n)

Input: n बिट्स की संख्या है। Output: गिनें कि कितनी संख्याएं मौजूद हैं जिनमें लगातार 1 नहीं हैं।
Begin
    0 से समाप्त होने वाली और 1 से समाप्त होने वाली स्ट्रिंग्स के साथ सूचियों को परिभाषित करें
    endWithZero[0] := 1
    endWithOne[0] := 1
    for i := 1 to n-1, do
        endWithZero[i] := endWithZero[i-1] + endWithOne[i-1]
        endWithOne[i] := endWithZero[i-1]
    done
    return endWithZero[n-1] + endWithOne[n-1]
End

उदाहरण

#include <iostream>
using namespace std;

int countBinNums(int n) {
    int endWithZero[n], endWithOne[n];
    endWithZero[0] = endWithOne[0] = 1;
    for (int i = 1; i < n; i++) {
        endWithZero[i] = endWithZero[i-1] + endWithOne[i-1];
        endWithOne[i] = endWithZero[i-1];
    }
    return endWithZero[n-1] + endWithOne[n-1];
}

int main() {
    int n;
    cout << "बिट्स की संख्या दर्ज करें: "; cin >> n;
    cout << "लगातार 1's के बिना बाइनरी संख्याओं की संख्या: " << countBinNums(n) << endl;
    return 0;
}

आउटपुट

बिट्स की संख्या दर्ज करें: 4
लगातार 1's के बिना बाइनरी संख्याओं की संख्या: 8
  1. - C++ में अगली संख्या का बाइनरी प्रतिनिधित्व

    इस समस्या में, हमें एक संख्या का बाइनरी प्रतिनिधित्व दिया जाता है और हमें अगली संख्या का बाइनरी प्रतिनिधित्व ढूंढना होता है यानी दी गई संख्या में एक जोड़ने के बाद परिणामी संख्या। बाइनरी प्रतिनिधित्व एक संख्या का आधार को आधार 2 में बदलना और संख्या को केवल 0 या 1 का उपयोग करके दर्शाना है। उदाहरण के लि

  1. - C++ में दी गई संख्या का बाइनरी प्रतिनिधित्व

    बाइनरी संख्या बाइनरी संख्या केवल 0 और 1 अंकों से बनी होती है। पुनरावर्ती विधि पुनरावृत्ति का उपयोग करके संख्या को बाइनरी में बदलें: 1, तो संख्या/2 के साथ पुनरावर्ती कॉल करें वापस आते समय संख्या % 2 प्रिंट करें उदाहरण कोड 1) toBinary(number / 2); cout << number % 2; } int ma

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

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