samedi 13 mars 2021

> answer not computing in this minimum sum of square equals a given number dynamic programming

'''

#include<bits/stdc++.h>
using namespace std;
vector<int> memo;
class Solution{
    public:
    int minimum(int a , int b){
        if(a>b) return b;
        return a;
    }
    public:
    int MinSquares(int n , vector<int> memo)
    {
        if(n<= 3){
             return n;
        }
        if(memo[n]>-1) {
            return memo[n];
        }
        
        int m = n ;
        for(int i = 1 ; n-(i*i)>=0; i++){
            
            m = minimum(m, MinSquares(n - i*i , memo) + 1 );
        }
        memo[n]=m;
        return memo[n];
    }
    
    
};

// { Driver Code Starts.
int main(){
    int tc;
    cin >> tc;
    while(tc--){
        int n;
        cin >> n;
        Solution ob;
        vector<int> memo;
        memo.assign(n+1 ,-1);
        memo[0]=0;
        memo[1]=1;
        int ans = ob.MinSquares(n , memo);
        cout << ans <<"\n";
    }
    return 0;
}

'''

  1. I know that recurrence relation and tried solving it with using pen and paper.

when trying output 100 it taking much more time than usual . I have spend at least 4 hour why there is no error in syntax and it is giving result for less than 100 . please help.

Aucun commentaire:

Enregistrer un commentaire