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

C++ प्रोग्राम: बाइनरी स्ट्रिंग खरीदने के लिए आवश्यक न्यूनतम सिक्के ढूंढें


मान लीजिए हमारे पास तीन संख्याएं c0, c1 और h हैं, और एक बाइनरी स्ट्रिंग S। हम S में किसी भी बिट को फ्लिप कर सकते हैं। हमें प्रत्येक बदलाव के लिए h सिक्कों का भुगतान करना चाहिए। कुछ बदलावों (संभवतः शून्य) के बाद हम स्ट्रिंग खरीदना चाहते हैं। स्ट्रिंग खरीदने के लिए हमें इसके सभी वर्ण खरीदने चाहिए। बिट 0 खरीदने के लिए हमें c0 सिक्कों का भुगतान करना चाहिए, बिट 1 खरीदने के लिए आपको c1 सिक्कों का भुगतान करना चाहिए। हमें स्ट्रिंग खरीदने के लिए आवश्यक सिक्कों की न्यूनतम संख्या ढूंढनी है।

उदाहरण के लिए, यदि इनपुट c0 = 10; c1 = 100; h = 1; S = "01010" है, तो आउटपुट 52 होगा, क्योंकि पहले हम S में दूसरे और चौथे बिट को बदलते हैं और उसके लिए 2 सिक्कों का भुगतान करते हैं। अब स्ट्रिंग 00000 होगी। उसके बाद, हम स्ट्रिंग खरीद सकते हैं और उसके लिए 5*10=50 सिक्कों का भुगतान कर सकते हैं। भुगतान किए गए सिक्कों की कुल संख्या 2+50=52 होगी।

चरण

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

k := 0 n := size of S for initialize i := 0, when i < n, update (increase i by 1), do:    if S[i] is same as '0', then:       k := k + minimum of c0 and (c1 + h)    Otherwise       k := k + minimum of (c0 + h) and c1 return k

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; int solve(int c0, int c1, int h, string S) {    int k = 0;    int n = S.size();    for (int i = 0; i < n; i++) {       if (S[i] == '0')          k = k + min(c0, c1 + h);       else          k = k + min(c0 + h, c1);    }    return k; } int main() {    int c0 = 10;    int c1 = 100;    int h = 1;    string S = "01010";    cout << solve(c0, c1, h, S) << endl; }

इनपुट

10, 100, 1, "01010"

आउटपुट

52
  1. C++ में बाइनरी ट्री की न्यूनतम गहराई ज्ञात करें C++ में बाइनरी ट्री की न्यूनतम गहराई ज्ञात करें

    इस समस्या में, हमें एक बाइनरी ट्री दी गई है। हमारा कार्य बाइनरी ट्री की न्यूनतम गहराई ज्ञात करना है।बाइनरी ट्री की एक विशेष शर्त होती है कि प्रत्येक नोड के अधिकतम दो बच्चे हो सकते हैं।बाइनरी ट्री की न्यूनतम गहराई रूट नोड से किसी भी लीफ नोड तक का सबसे छोटा पथ होता है।आइए एक उदाहरण से समझते हैं:इनपुटआ

  1. C++ में बाइनरी ट्री में अधिकतम (या न्यूनतम) मान ढूंढें C++ में बाइनरी ट्री में अधिकतम (या न्यूनतम) मान ढूंढें

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य बाइनरी ट्री में अधिकतम (या न्यूनतम) मान ढूंढना है। समस्या विवरण: हमें बाइनरी ट्री के उन नोड्स को ढूंढना है जिनका मान बाइनरी ट्री में अधिकतम और न्यूनतम है। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: आउटपुट: max = 9 , min = 1 समाधान

  1. C++ में दो बाइनरी स्ट्रिंग्स को जोड़ें C++ में दो बाइनरी स्ट्रिंग्स को जोड़ें

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