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

C++ में संख्या अनुमान लगाएं उच्च या निम्न


समस्या विवरण

मान लीजिए हम गेस गेम खेल रहे हैं। इस गेम के गुण इस प्रकार हैं:

  • खिलाड़ी 1, 1 से n तक एक संख्या चुनेगा। खिलाड़ी 2 को अनुमान लगाना होगा कि मैंने कौन सी संख्या चुनी है।
  • हर बार जब खिलाड़ी 2 गलत अनुमान लगाता है, तो खिलाड़ी 1 बताएगा कि संख्या अधिक है या कम।

हम guess(num) फ़ंक्शन का उपयोग कर सकते हैं जो 3 संभावित परिणाम लौटाता है:

  • -1 - खिलाड़ी 1 की संख्या कम है
  • 1 - खिलाड़ी 1 की संख्या अधिक है
  • 0 - संख्या मेल खाती है

उदाहरण

यदि इनपुट है: n = 10, pick = 5, तो आउटपुट होगा 5।

हल करने का दृष्टिकोण

इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें (बाइनरी सर्च):

  • l := 1, r := n
  • जब l <= r:
    • m := l + (r - l) / 2
    • यदि guess(m) == 0, तो m लौटाएं
    • यदि guess(m) == -1, तो r := m - 1
    • अन्यथा l := m + 1
  • 0 लौटाएं

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

class Solution {
private:
    int number;
    int guess(int num) {
        if(number > num)
            return 1;
        if(number < num)
            return -1;
        return 0;
    }
public:
    Solution(int n) {
        number = n;
    }
    int guessNumber(int n) {
        int l=1, r=n, m;
        while(l <= r) {
            m = l + (r-l)/2;
            if(guess(m) == 0)
                return m;
            if(guess(m) == -1)
                r = m-1;
            else
                l = m+1;
        }
        return 0;
    }
};

int main() {
    Solution ob(5); // pick = 5
    cout << (ob.guessNumber(10));
    return 0;
}

इनपुट

5,10

आउटपुट

5
  1. - C++ में मितव्ययी संख्या (Frugal Number)

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया गया है। हमारा कार्य यह जांचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या (FRUGAL NUMBER) − एक संख्या जिसके अंकों की संख्या उस संख्या के अभाज्य गुणनखंडन में अंकों की संख्या से सख्ती से अधिक है। उदाहरण &

  1. C++ में पेंटाटोप संख्या C++ में पेंटाटोप संख्या

    एक पेंटाटोप संख्या को पास्कल के त्रिभुज में पांचवीं संख्या के रूप में वर्णित किया गया है। अब, चूंकि यह पांचवीं संख्या है, इसका मतलब है कि पास्कल के त्रिभुज में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है जो पास्कल के त्रिभुज की चौथी पंक्ति है। तो, इस

  1. - C++ में एडम नंबर जांचना

    इस खंड में हम देखेंगे कि दी गई संख्या एडम नंबर है या नहीं, इसकी जांच करने वाला प्रोग्राम कैसे लिखें। कोड में जाने से पहले देखते हैं कि एडम नंबर क्या है? एडम नंबर वह संख्या है, मान लीजिए n, यदि n का वर्ग और n के रिवर्स का वर्ग एक-दूसरे के रिवर्स हैं, तो वह संख्या एडम नंबर है। उदाहरण के लिए संख्या 13