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

C++-এ গেস নাম্বার হাইওয়ার অর লোয়ার II


গেস গেম: প্লেয়ার ১, ১ থেকে n পর্যন্ত নম্বর পিক করে। প্লেয়ার ২ গেস করে। ভুল গেসে প্লেয়ার ১ বলে হাইওয়ার/লোয়ার। গেস x-এ ভুল হলে $x টাকা দিতে হয়। ন্যূনতম খরচে গ্যারান্টি সহ সঠিক নম্বর পাওয়ার খরচ বের করতে হবে।

উদাহরণ: n=8 → ১২।

সমাধানের ধাপসমূহ

  • DP: cost(low, high) = রেঞ্জ [low, high]-এ গ্যারান্টি সহ জয়ের ন্যূনতম খরচ।
  • বেস: low >= high → ০।
  • প্রতিটি i = low..high ট্রাই করুন: খরচ = i + max(cost(low,i-1), cost(i+1,high))।
  • ন্যূনতম খরচ নিন। মেমোরাইজেশন ব্যবহার করুন।

C++ উদাহরণ

#include <bits/stdc++.h>
using namespace std;

class Solution {
    int cost(int low, int high, vector<vector<int>>& dp) {
        if (low >= high) return 0;
        if (dp[low][high] != -1) return dp[low][high];
        int ans = INT_MAX;
        for (int i = low; i <= high; i++)
            ans = min(ans, i + max(cost(low, i-1, dp), cost(i+1, high, dp)));
        return dp[low][high] = ans;
    }
public:
    int getMoneyAmount(int n) {
        vector<vector<int>> dp(n+1, vector<int>(n+1, -1));
        return cost(1, n, dp);
    }
};

int main() {
    Solution ob;
    cout << ob.getMoneyAmount(8);
}

ইনপুট

8

আউটপুট

12
  1. C++-এ ন্যূনতম পৃষ্ঠা বণ্টন (Allocate Minimum Pages)

  2. C++ প্রোগ্রাম: মিস্টেরি নাম্বার (Mystery Number) চেক করা

  3. C++-এ ভেরিয়েবল সংখ্যক আর্গুমেন্ট (Variable Arguments)

  4. C++-এ CHAR_BIT