কম্পিউটার

C++ এ কার্ড ফ্লিপিং গেম


ধরুন একটি টেবিলে N কার্ড রয়েছে, প্রতিটি কার্ডের উভয় পাশে একটি ধনাত্মক পূর্ণসংখ্যা মুদ্রিত (সম্ভবত আলাদা)। আমাদের যেকোনো সংখ্যক কার্ড ফ্লিপ করতে হবে, এবং আমরা একটি কার্ড বেছে নেওয়ার পর। যদি নির্বাচিত কার্ডের পিছনের দিকের X নম্বরটি কোনও কার্ডের সামনে না থাকে, তাহলে X নম্বরটি ভাল হিসাবে পরিচিত। আমাদের সবচেয়ে ছোট সংখ্যাটি বের করতে হবে যে ভালো? যখন কোন সংখ্যা ভাল না হয়, 0 ফেরত দিন। এখানে, ফ্রন্ট[i] এবং পিছন [i] কার্ড i এর সামনের এবং পিছনের দিকের সংখ্যাটি উপস্থাপন করুন। একটি ফ্লিপ সামনের এবং পিছনের নম্বরগুলিকে অদলবদল করবে, তাই সামনের মানটি এখন পিছনে এবং বিপরীতে রয়েছে৷

সুতরাং ইনপুট যদি ফ্রন্টস =[1,2,4,4,7] এবং পিছনে =[1,3,4,1,3] এর মত হয়, তাহলে আউটপুট হবে 2। তাই আমরা যদি দ্বিতীয় কার্ডটি ফ্লিপ করি, সামনের মান হবে [1,3,4,4,7], এবং পিছনের মান হবে [1,2,4,1,3]। আমরা দ্বিতীয় কার্ডটি বেছে নেব, যার পিছনে 2 নম্বর রয়েছে এবং এটি কোনও কার্ডের সামনে নয়, তাই 2 একটি ভাল নম্বর৷

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

  • একটি সেট সংজ্ঞায়িত করুন s, n :=ফ্রন্টের আকার, ret :=inf
  • আমি 0 থেকে n – 1
      পরিসরে
    • যদি সম্মুখভাগ[i] =পিছনে[i], তাহলে s-তে সম্মুখভাগ[i] ঢোকান
  • আমি 0 থেকে n – 1
      পরিসরে
    • যদি ফ্রন্ট[i] সেটে থাকে তাহলে ret :=ন্যূনতম ret এবং ফ্রন্টস[i]
  • আমি 0 থেকে n – 1
      পরিসরে
    • যদি ব্যাক[i] সেটে না থাকে তাহলে ret :=ন্যূনতম ret এবং backs[i]
  • 0 রিটার্ন করুন যখন ret =inf, অন্যথায় ret করুন।

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int flipgame(vector<int>& fronts, vector<int>& backs) {
      set <int> s;
      int n = fronts.size();
      int ret = INT_MAX;
      for(int i = 0; i < n; i++){
         if(fronts[i] == backs[i])s.insert(fronts[i]);
      }
      for(int i = 0; i <n; i++ ){
         if(s.count(fronts[i]) == 0) ret = min(ret, fronts[i]);
      }
      for(int i = 0; i <n; i++ ){
         if(s.count(backs[i]) == 0) ret = min(ret, backs[i]);
      }
      return ret == INT_MAX? 0 : ret;
   }
};
main(){
   vector<int> v1 = {1,2,4,4,7};
   vector<int> v2 = {1,3,4,1,3};
   Solution ob;
   cout << (ob.flipgame(v1, v2));
}

ইনপুট

[1,2,4,4,7]
[1,3,4,1,3]

আউটপুট

2

  1. C++ এ জাম্প গেম IV

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

  3. C++-এ বেস-2-এ রূপান্তর করুন

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