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

C++ में टोकन का थैला

मान लीजिए कि हमारे पास प्रारंभिक शक्ति पी है, 0 अंक का प्रारंभिक स्कोर और टोकन का एक बैग है। अब प्रत्येक टोकन का अधिकतम एक बार उपयोग किया जा सकता है, एक मूल्य टोकन [i] है, और इसका उपयोग करने के संभावित रूप से दो तरीके हैं, ये इस प्रकार हैं -

  • यदि हमारे पास कम से कम टोकन [i] शक्ति है, तो हम टोकन फेस अप खेल सकते हैं, टोकन [i] शक्ति खो सकते हैं, और 1 अंक प्राप्त कर सकते हैं।

  • अन्यथा जब हमारे पास कम से कम 1 अंक होता है, तो हम टोकन फेस डाउन खेल सकते हैं, टोकन [i] शक्ति प्राप्त कर सकते हैं, और 1 अंक खो सकते हैं।

हमें किसी भी संख्या में टोकन खेलने के बाद सबसे अधिक अंक प्राप्त करने होंगे।

तो अगर इनपुट टोकन =[100,200,300,400] और पी =200 की तरह है, तो आउटपुट 2 होगा।

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

  • n :=सरणी का आकार v, ret :=0

  • v सरणी को सॉर्ट करें

  • सेट मैं :=0 और j :=n – 1, curr :=

  • जबकि मैं <=j और x>=v[i]

    • जबकि मैं <=j और x>=v[i]

      • x को v[i] से घटाएं, curr और i को 1 से बढ़ाएं

    • ret :=अधिकतम curr और ret

    • जबकि j>=i और curr 0 नहीं है और x

      • x को v[j] से बढ़ाएँ, curr और j को 1 से घटाएँ

  • वापसी रिट

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int bagOfTokensScore(vector<int>& v, int x) {
      int n = v.size();
      int ret = 0;
      sort(v.begin(), v.end());
      int i = 0;
      int j = n - 1;
      int curr = 0;
      while(i <= j && x >= v[i]){
         while(i <= j && x >= v[i]){
            x -= v[i];
            curr++;
            i++;
         }
         ret = max(curr, ret);
         while(j >= i && curr && x < v[i]){
            curr--;
            x += v[j];
            j--;
         }
      }
      return ret;
   }
};
main(){
   vector<int> v1 = {100,200,300,400};
   Solution ob;
   cout << (ob.bagOfTokensScore(v1, 200));
}

इनपुट

[100,200,300,400]
200

आउटपुट

2

  1. सी/सी++ टोकन?

    C++ टोकन किसी प्रोग्राम की सबसे छोटी व्यक्तिगत इकाइयाँ हैं। सी ++ सी का सुपरसेट है और इसलिए सी के अधिकांश निर्माण सी ++ में कानूनी हैं और उनके अर्थ और उपयोग अपरिवर्तित हैं। तो टोकन, एक्सप्रेशन और डेटा प्रकार सी के समान हैं। सी ++ टोकन निम्नलिखित हैं:(अधिकांश सी ++ टोकन मूल रूप से सी टोकन के समान ह

  1. C++ में मितव्ययी संख्या

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

  1. सी++ पेंटाटोप नंबर

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