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

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

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

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

हालाँकि, जब कोई खिलाड़ी किसी विशेष संख्या x का अनुमान लगाता है, और दूसरा खिलाड़ी गलत अनुमान लगाता है, तो दूसरे खिलाड़ी को $x का भुगतान करना पड़ता है। खेल समाप्त हो जाएगा, जब खिलाड़ी 2 को सही उत्तर मिल जाएगा।

उदाहरण के लिए यदि n =10, और खिलाड़ी1 ने 8 लिया है

  • पहले दौर में, खिलाड़ी2 बताता है कि संख्या 5 है, यह गलत है, वास्तविक संख्या अधिक है, तो वह $5 देगा
  • दूसरे दौर में, खिलाड़ी 2 बताता है कि संख्या 7 है, यह गलत है, वास्तविक संख्या अधिक है, तो वह $7 देगा
  • तीसरे दौर में, खिलाड़ी 2 बताता है कि संख्या 9 है, यह गलत है, वास्तविक संख्या कम है, तो वह $9 देगा

अब खेल खत्म। तो दिया गया कुल पैसा $5 + $7 + $9 =$21 है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • लागत नामक एक विधि बनाएं, जो निम्न, उच्च, दूसरी तालिका डीपी ले रही है
  • यदि कम है>=अधिक है, तो 0 लौटें
  • अगर dp[low, high] -1 नहीं है, तो dp[low, high] लौटाएं
  • उत्तर:=जानकारी
  • मेरे लिए निम्न से उच्च श्रेणी में
    • उत्तर:=न्यूनतम उत्तर और (i + अधिकतम लागत (कम, i – 1, dp) और लागत (i + 1, उच्च, dp))
  • dp[low, high] :=ans and return ans
  • वास्तविक विधि इस प्रकार होगी -
  • एक 2d सरणी बनाएं जिसे dp आकार (n + 1) x (n + 1) कहा जाता है, और इसे -1 से भरें
  • वापसी लागत(1, एन, डीपी)

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int cost(int low, int high, vector < vector <int> >& dp){
      if(low >= high)return 0;
      if(dp[low][high] != -1)return dp[low][high];
      int ans = INT_MAX;
      for(int i = low; i <= high; i++){
         ans = min(ans, i + max(cost(low, i - 1, dp), cost(i + 1, high, dp)));
      }
      return dp[low][high] = ans;
   }
   int getMoneyAmount(int n) {
      vector < vector <int> > dp(n + 1, vector <int> (n + 1, -1));
      return cost(1, n, dp);
   }
};
int main() {
   Solution ob1;
   cout << ob1.getMoneyAmount(8) << endl;
   return 0;
}

इनपुट

8

आउटपुट

12

  1. जांचें कि क्या कोई संख्या सी ++ में एक रहस्य संख्या है

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

  1. सी ++ में तर्कों की परिवर्तनीय संख्या

    कभी-कभी, आप एक ऐसी स्थिति में आ सकते हैं, जब आप एक ऐसा फ़ंक्शन करना चाहते हैं, जो पैरामीटर की पूर्वनिर्धारित संख्या के बजाय तर्कों की चर संख्या, यानी पैरामीटर ले सकता है। सी/सी++ प्रोग्रामिंग भाषा इस स्थिति के लिए एक समाधान प्रदान करती है और आपको एक फ़ंक्शन को परिभाषित करने की अनुमति है जो आपकी आवश्

  1. C++ में CHAR_BIT

    CHAR_BIT चार में बिट्स की संख्या है। इसे C++ भाषा में “limits.h” हेडर फाइल में घोषित किया गया है। यह 8-बिट प्रति बाइट का होता है। यहाँ C++ भाषा में CHAR_BIT का एक उदाहरण दिया गया है, उदाहरण #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a