কম্পিউটার

C++ এ পারফেক্ট স্কোয়ার


ধরুন আমাদের একটি ধনাত্মক পূর্ণসংখ্যা n আছে, নিখুঁত বর্গ সংখ্যার সর্বনিম্ন সংখ্যা বের করুন যার যোগফল n। সুতরাং যদি সংখ্যাটি 13 হয়, তাহলে আউটপুট 2 হবে, যেমন সংখ্যা 13 =9 + 4

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

  • ডাইনামিক প্রোগ্রামিংয়ের জন্য n + 1 দৈর্ঘ্যের একটি টেবিল তৈরি করুন এবং এটিকে অসীম দিয়ে পূরণ করুন
  • dp[0] :=0
  • এর জন্য i :=1, যখন i*i <=n
    • x =i * i
    • j এর জন্য :=x থেকে n
      • dp[j] :=ন্যূনতম dp[j] এবং 1 + dp[j – x]
  • রিটার্ন dp[n]

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
#define INF 1e9
class Solution {
   public:
   int numSquares(int n) {
      vector < int > dp(n+1,INF);
      dp[0] = 0;
      for(int i =1;i*i<=n;i++){
         int x = i*i;
         for(int j = x;j<=n;j++){
            dp[j] = min(dp[j],1+dp[j-x]);
         }
      }
      return dp[n];
   }
};
main(){
   Solution ob;
   cout << (ob.numSquares(147));
}

ইনপুট

147

আউটপুট

3

  1. C++ এ একটি আয়তক্ষেত্রে বর্গক্ষেত্রের সংখ্যা গণনা করুন

  2. iswprint( ) C++ এ

  3. C++ এ একটি গ্রিডে ম্যাজিক স্কোয়ার গণনা করুন

  4. C++ এ একটি বোর্ডকে বর্গাকারে কাটতে ন্যূনতম খরচ