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

सी++ में 24 गेम

मान लीजिए हमारे पास चार कार्ड हैं; इन कार्डों में 1 से 9 तक कुछ संख्याएँ हैं। हमें यह जाँचना होगा कि क्या वे 24 प्राप्त करने के लिए +, -, *, / जैसे कुछ ऑपरेटरों के माध्यम से काम कर सकते हैं। इसलिए यदि हमारे पास कुछ संख्याएँ हैं जैसे [4,9,2,6 ], तो हम 24 गुणा (4 * 9) – (2 * 6) प्राप्त कर सकते हैं, उत्तर सत्य होगा।

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

  • एप्सिलॉन:=10.0^-5
  • एक फ़ंक्शन को हल करें परिभाषित करें (), यह एक सरणी v लेगा,
  • यदि v का आकार 1 के समान है, तो −
    • सही लौटें जब |v[0] - 24.0| <=एप्सिलॉन
  • इनिशियलाइज़ i :=0 के लिए, जब i करें
  • इनिशियलाइज़ j :=0 के लिए, जब j करें
  • यदि i, j के समान है, तो:निम्नलिखित भाग पर ध्यान न दें, अगले पुनरावृत्ति पर जाएं
  • एक सरणी रेस परिभाषित करें
  • इनिशियलाइज़ k :=0 के लिए, जब k
  • यदि i, k के बराबर नहीं है और j, k के बराबर नहीं है, तो −
    • रेस के अंत में v[k] डालें
  • इनिशियलाइज़ k :=0 के लिए, जब k <4, अपडेट करें (k को 1 से बढ़ाएँ), −
      करें
    • यदि ऑपरेटर [k] '+' के समान है, तो −
      • रेस के अंत में v[i] + v[j] डालें
    • अन्यथा जब ऑपरेटर[k] '-' के समान हो, तो −
      • रेस के अंत में v[i] - v[j] डालें
    • अन्यथा जब ऑपरेटर[k] '*' के समान हो, तो −
      • रेस के अंत में v[i] * v[j] डालें
    • अन्यथा
      • रेस के अंत में v[i] / v[j] डालें
    • यदि हल करें(res), तो −
      • सही लौटें
    • Res से अंतिम तत्व हटाएं
  • झूठी वापसी
  • मुख्य विधि से निम्न चरणों का पालन करें -
  • एक सरणी v परिभाषित करें
  • इनिशियलाइज़ i :=0 के लिए, जब i <अंकों का आकार, अपडेट करें (i से 1 बढ़ाएँ), करें -
    • v के अंत में nums[i] डालें
  • रिटर्न सॉल्व (v)
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
    public:
       char operators[4] = {'+', '-', '/', '*'};
       double epsilon = pow(10.0, -5);
       bool judgePoint24(vector<int>& nums) {
          vector <double> v;
          for(int i = 0; i < nums.size(); i++){
             v.push_back(nums[i]);
          }
          return solve(v);
       }
       bool solve(vector <double> v){
          if(v.size() == 1){
             return abs(v[0] - 24.0) <= epsilon;
          }
          for(int i = 0; i < v.size(); i++){
             for(int j = 0; j < v.size(); j++){
                if(i == j) continue;
                   vector <double> res;
                for(int k = 0; k < v.size(); k++){
                   if(i != k && j != k){
                      res.push_back(v[k]);
                   }
                }
                for(int k = 0; k < 4; k++){
                   if(operators[k] == '+'){
                      res.push_back(v[i] + v[j]);
                   }else if(operators[k] == '-'){
                      res.push_back(v[i] - v[j]);
                   }else if(operators[k] == '*'){
                      res.push_back(v[i] * v[j]);
                   }else{
                      res.push_back(v[i] / v[j]);
                   }
                   if(solve(res)) return true;
                      res.pop_back();
                }
             }
          }
          return false;
       }
    };
    main(){
       Solution ob;
       vector<int> v = {4,9,2,6};
       cout << (ob.judgePoint24(v));
    }

    इनपुट

    {4,9,2,6}

    आउटपुट

    1

    1. सी++ में जंप गेम IV

      मान लीजिए कि हमारे पास arr नामक पूर्णांकों की एक सरणी है। हम शुरुआत में इंडेक्स 0 पर हैं। एक चरण में हम इंडेक्स i से i + x पर जा सकते हैं जहां:i + x =0. j जहां:arr[i] और arr[j] समान हैं और i और j समान नहीं हैं। यहाँ n सरणी का आकार है। सरणी के अंतिम सूचकांक तक पहुंचने के लिए हमें न्यूनतम चरणों की संख

    1. सी++ में जंप गेम वी

      मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है जिसे arr और एक पूर्णांक d कहा जाता है। एक चरण में हम इंडेक्स i से − . पर जा सकते हैं i + x जहां:i + x

    1. सी++ में जंप गेम III

      मान लीजिए कि हमारे पास गैर-ऋणात्मक पूर्णांकों की एक सरणी है, हम प्रारंभ में सरणी के प्रारंभ अनुक्रमणिका पर स्थित हैं। जब हम इंडेक्स i पर मौजूद होते हैं, तो हम i + arr[i] या i-arr[i] पर जा सकते हैं, जांच सकते हैं कि क्या हम 0 के मान वाले किसी इंडेक्स तक पहुंच सकते हैं। हमें यह ध्यान रखना होगा कि हम इ