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

C++-এ বাস্ট ব্যালুন্স (Burst Balloons) সমস্যা

বাস্ট ব্যালুন্স সমস্যা

nটি ব্যালুন আছে, প্রতিটির ওপর একটি সংখ্যা। ব্যালুন i ফোড়ালে পাওয়া যায় nums[i-1] * nums[i] * nums[i+1] কয়েন। ফোড়ার পর i-1 এবং i+1 সংলগ্ন হয়ে যায়। সর্বোচ্চ কয়েন সংগ্রহ করতে হবে।

উদাহরণ: [3,1,5,7] → ১৪৮ (ক্রম: ১, ৫, ৩, ৭ ফোড়ালে)

সমাধানের পদ্ধতি (ডাইনামিক প্রোগ্রামিং - ইন্টারভোল DP)

  • dp[l][r] = সাবঅ্যারে [l, r]-এ সব ব্যালুন ফোড়ালে সর্বোচ্চ কয়েন
  • অবশিষ্ট ব্যালুনগুলো ধরে l-1 এবং r+1 সীমানা হিসেবে বিবেচনা করুন
  • for l = n-1 down to 0, for r = l to n-1:
    • for i = l to r (শেষে ফোড়া ব্যালুন i ধরে):
      • coins = dp[l][i-1] + dp[i+1][r] + nums[l-1]*nums[i]*nums[r+1]
      • dp[l][r] = max(dp[l][r], coins)
  • dp[0][n-1] ফেরত দিন

C++ কোড উদাহরণ

[3,1,5,7]

আউটপুট

148
  1. C++ Enum: একটি গাইড

  2. C++-এ Switch Statement: ব্যবহার করার পদ্ধতি

  3. Frugal সংখ্যা চেক করা (C++)

  4. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা