কম্পিউটার টিউটোরিয়াল

C++-এ কার্ড ফ্লিপিং গেম সমস্যা সমাধান

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

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

এটি সমাধান করার জন্য নিচের ধাপগুলি অনুসরণ করুন −

  • একটি সেট s সংজ্ঞায়িত করুন, n := fronts-এর আকার, ret := inf
  • i = 0 থেকে n - 1 পর্যন্ত
    • যদি fronts[i] == backs[i] হয়, তবে fronts[i] সেটে ইনসার্ট করুন
  • i = 0 থেকে n - 1 পর্যন্ত
    • যদি fronts[i] সেটে না থাকে, তবে ret := min(ret, fronts[i])
  • i = 0 থেকে n - 1 পর্যন্ত
    • যদি backs[i] সেটে না থাকে, তবে ret := min(ret, backs[i])
  • ret = inf হলে 0 ফেরত দিন, অন্যথায় 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 (Jump Game IV)

  2. C++-এ জাম্প গেম V (Jump Game V)

  3. সি++-এ কনভার্ট টু বেস -২ (Convert to Base -2)

  4. সি++-এ স্টোন গেম (Stone Game)