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

এক সংখ্যা গঠন করতে পারফেক্ট স্কয়ার সংখ্যাগুলোর ন্যূনতম সংখ্যা বের করা C++-এ


একটি ধনাত্মক সংখ্যা n দেওয়া আছে। লক্ষ্য হল যেসব পূর্ণবর্গ সংখ্যা যোগ করে n তৈরি করা যায়, তাদের ন্যূনতম সংখ্যা বের করা। ডাইনামিক প্রোগ্রামিং দিয়ে সমাধান।

dp[i] = i গঠন করতে লাগবে ন্যূনতম পূর্ণবর্গ সংখ্যা। dp[0]=0। প্রতিটি পূর্ণবর্গ x=i*i-এর জন্য dp[j] = min(dp[j], 1+dp[j-x]) আপডেট করা হয়।

উদাহরণ

ইনপুট: 10

আউটপুট: ২

ব্যাখ্যা: ১০ = ৯ + ১ (দুটি পূর্ণবর্গ)

C++ কোড উদাহরণ
#include 
using namespace std;

#define INF 1e9

class Solution {
public:
    int solve(int n) {
        vector 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];
    }
};

int main(){
    Solution ob;
    cout << ob.solve(10);
    return 0;
}
আউটপুট

উপরোক্ত কোড রান করলে আউটপুট:

2
  1. C++ প্রোগ্রাম: দিয়ে দেয়া আকারের ডোডেকাগন बनाने के तरीক সংখ্যা গণনা

  2. সি++-এ আয়তক্ষেত্রে বর্গের সংখ্যা গণনা

  3. C++-এ পূর্ণবর্গ সংখ্যা (Perfect Squares - Least Number of Perfect Squares Summing to n)

  4. C++-এ অলমোস্ট পারফেক্ট নম্বর (সামান্য পূর্ণসংখ্যা নয়)