
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count Perfect Squares That Sum to a Number in C++
Suppose we have a positive number n, we have to find the least number of perfect square numbers whose sum is same as n. So if the number is 10, then the output is 2, as the numbers are 10 = 9 + 1.
To solve this, we will follow these steps −
- create one table for dynamic programming, of length n + 1, and fill it with infinity
- dp[0] := 0
- for i := 1, when i*i <= n
- x = i * i
- for j := x to n
- dp[j] := minimum of dp[j] and 1 + dp[j – x]
- return dp[n]
Let us see the following implementation to get better understanding −
Example
#include<bits/stdc++.h> using namespace std; #define INF 1e9 class Solution { public: int solve(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.solve(10); }
Input
10
Output
2
Advertisements