কম্পিউটার

C++ এ 24 গেম


ধরুন আমাদের চারটি কার্ড আছে; এই কার্ডগুলিতে 1 থেকে 9 পর্যন্ত কিছু সংখ্যা রয়েছে। আমাদের চেক করতে হবে যে তারা 24 পাওয়ার জন্য +, -, *, /, এর মতো কিছু অপারেটরের মাধ্যমে কাজ করতে পারে কিনা। তাই যদি আমাদের কিছু সংখ্যা থাকে যেমন [4,9,2,6 ], তাহলে আমরা (4 * 9) - (2 * 6) দ্বারা 24 পেতে পারি, উত্তরটি সত্য হবে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • এপসিলন :=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 এর সমান না হয়, তাহলে −
    • res এর শেষে v[k] ঢোকান
  • আরম্ভ করার জন্য k :=0, যখন k <4, আপডেট করুন (k 1 দ্বারা বৃদ্ধি করুন), −
      করুন
    • যদি অপারেটর[k] '+' এর মত হয়, তাহলে −
      • res এর শেষে v[i] + v[j] ঢোকান
    • অন্যথায় যখন অপারেটর[k] '-' এর মত হয়, তখন −
      • res এর শেষে v[i] - v[j] ঢোকান
    • অন্যথায় যখন অপারেটর[k] '*' এর মত হয়, তখন −
      • res এর শেষে v[i] * v[j] ঢোকান
    • অন্যথায়
      • res এর শেষে 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. C++ এ জাম্প গেম IV

    2. C++ এ গেম ভি জাম্প করুন

    3. C++ এ স্টোন গেম

    4. C++ এ জাম্প গেম III