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

C++ में बाइनरी स्ट्रिंग को वैकल्पिक बनाने के लिए आवश्यक फ्लिप की संख्या - सेट 1


मान लीजिए आपके पास एक बाइनरी स्ट्रिंग "10011" दी गई है। एक वैकल्पिक बाइनरी स्ट्रिंग बनाने के लिए, हमें न्यूनतम 2 वर्णों को फ्लिप करना होगा जैसे "10101"।

वैकल्पिक स्ट्रिंग के लिए दो संभावनाएं हैं। यह 0 या 1 से शुरू होगी। हम दोनों विकल्पों की जांच करेंगे और दोनों के लिए आवश्यक फ्लिप की संख्या गिनेंगे।

और फिर दोनों का न्यूनतम लौटाएंगे। आइए एक उदाहरण देखते हैं।

इनपुट

binary = "10011"

आउटपुट

2

यदि हम स्ट्रिंग को 0 से शुरू करते हैं, तो हमें 3 बार फ्लिप करना होगा। और यदि हम स्ट्रिंग को 1 से शुरू करते हैं, तो हमें 2 बार फ्लिप करना होगा। न्यूनतम 2 है।

एल्गोरिदम

  • बाइनरी स्ट्रिंग को आरंभ करें।
  • 1 से शुरू होने वाली वैकल्पिक स्ट्रिंग बनाने के लिए आवश्यक फ्लिप गिनें।
  • इसी तरह 0 से शुरू होने वाली वैकल्पिक स्ट्रिंग बनाने के लिए आवश्यक फ्लिप गिनें।
  • उपरोक्त दोनों से न्यूनतम ढूंढें।
  • न्यूनतम प्रिंट करें।

कार्यान्वयन

उपरोक्त एल्गोरिदम का C++ में कार्यान्वयन निम्नलिखित है:

#include <bits/stdc++.h> using namespace std; char flip(char binaryDigit) {    return binaryDigit == '0' ? '1' : '0'; } int getFlipCountToAlternateString(string binary, char expected) {    int flipCount = 0;    for (int i = 0; i < binary.length(); i++) {       if (binary[i] != expected) {          flipCount++;       }       expected = flip(expected);    }    return flipCount; } int main() {    string binary = "10011";    cout << min(getFlipCountToAlternateString(binary, '0'), getFlipCountToAlternateString(binary,       '1')) << endl;    return 0; }

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्नलिखित परिणाम मिलेगा।

2
  1. C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए न्यूनतम फ्लिप C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए न्यूनतम फ्लिप

    मान लीजिए हमारे पास एक m x n बाइनरी मैट्रिक्स mat है। एक चरण में, हम एक सेल चुन सकते हैं और उसके बिट और उसके चारों पड़ोसियों (यदि मौजूद हों) को फ्लिप कर सकते हैं। हमें मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए आवश्यक न्यूनतम चरणों की संख्या ज्ञात करनी है। यदि कोई समाधान नहीं है, तो -1 वापस करें।

  1. - C++ में जांचें कि संख्या के बिट्स वैकल्पिक पैटर्न में हैं या नहीं - सेट 1

    आइए मान लें हमारे पास एक पूर्णांक n है। समस्या यह जांचना है कि क्या इस पूर्णांक के बाइनरी समकक्ष में वैकल्पिक पैटर्न हैं या नहीं। वैकल्पिक पैटर्न का अर्थ है 101010...।दृष्टिकोण ऐसा है: बाइनरी समकक्ष का उपयोग करके प्रत्येक अंक की जांच करें, और यदि दो लगातार समान हैं, तो फाल्स लौटाएं, अन्यथा सत्य।उदाह

  1. - C++ में k सेट बिट्स के साथ नंबर को अधिकतम करने के लिए न्यूनतम फ्लिप्स

    समस्या कथनदो नंबर n और k दिए गए हैं, हमें दिए गए नंबर को उसके बिट्स फ्लिप करके अधिकतम करने के लिए आवश्यक न्यूनतम फ्लिप्स की संख्या ढूंढनी है जैसे कि परिणामी नंबर में ठीक k सेट बिट्स हों। कृपया ध्यान दें कि इनपुट को कंडीशन पूरी करनी चाहिए कि k, n में बिट्स की संख्या से कम हो।उदाहरणमान लीजिए n = 9 और