Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में बिल्कुल सही वर्ग

मान लीजिए कि हमारे पास एक धनात्मक पूर्णांक n है, तो उन पूर्ण वर्ग संख्याओं की न्यूनतम संख्या ज्ञात कीजिए जिनका योग n है। तो अगर संख्या 13 है, तो आउटपुट 2 है, क्योंकि संख्याएं 13 =9 + 4 हैं

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • गतिशील प्रोग्रामिंग के लिए n + 1 लंबाई की एक तालिका बनाएं, और इसे अनंत से भरें
  • dp[0] :=0
  • i :=1 के लिए, जब i*i <=n
    • x =मैं * मैं
    • जे के लिए:=x से n
      • dp[j] :=न्यूनतम dp[j] और 1 + dp[j - x]
  • रिटर्न डीपी[एन]

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#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++ में एक आयत में वर्गों की संख्या गिनें

    =B. लक्ष्य उन वर्गों की संख्या का पता लगाना है जिन्हें LXB आकार का एक आयत समायोजित कर सकता है। ऊपर दिया गया चित्र 3 X 2 आकार का एक आयत दिखाता है। इसमें 2, 2X2 वर्ग और 6,1X1 वर्ग हैं। कुल वर्ग=6+2=8. LXB आकार के प्रत्येक आयत में L*B संख्या 1X1 वर्ग होती है। सबसे बड़े वर्ग BXB आकार के होते ह

  1. C++ में एक ग्रिड में मैजिक स्क्वायर गिनें

    हमें संख्याओं के एक मैट्रिक्स के साथ दिया गया है। लक्ष्य दिए गए मैट्रिक्स के अंदर मौजूद जादुई वर्गों की संख्या ज्ञात करना है। एक मैजिक स्क्वायर, यदि मैट्रिक्स के रूप में लिया जाता है, तो एक 3X3 मैट्रिक्स होता है जिसमें सुडोकू में ग्रिड की तरह 1 से 9 तक के तत्व होते हैं। गुण हैं - सभी नंबर बिल्कुल

  1. बोर्ड को C++ में वर्गों में काटने की न्यूनतम लागत

    अवधारणा मान लीजिए कि लंबाई p और चौड़ाई q का एक बोर्ड दिया गया है, हमें इस बोर्ड को p*q वर्गों में तोड़ने की आवश्यकता है ताकि तोड़ने की लागत कम से कम हो। इस बोर्ड के लिए हर किनारे के लिए कटिंग कॉस्ट दी जाएगी। संक्षेप में, हमें काटने के ऐसे क्रम का चयन करने की आवश्यकता है जिससे लागत कम से कम हो। उदाह