Skip to main content

some common recursive problem in c++


//1 check a string is palindrome or not

bool checkString(string &name,int start,int end)

{


    if(start>=end)

    {

        return true;

    }

    char a=name[start];

    char b=name[end];

    if(a==b)

    {

       return checkString(name,++start,--end);

    }

     return false;  

  

}



//2 get maximum element from a array

int getMax(vector<int> &items,int index=0)

{

    if(index>=items.size())

    {

        return 0;

    }

    int current=items.at(index);

    return max(current,getMax(items,++index));

}


//3 Longest Common Subsequence

int LCS(string &str1,string &str2,int a=0,int b=0)

{

    if(a>=str1.length() || b>=str2.length())

    {

        return 0;

    }

    if(str1[a]==str2[b])

    {

        

        //if match increase both a and b

        return 1+LCS(str1,str2,a+1,b+1);

    }

    return max(LCS(str1,str2,a+1,b),LCS(str1,str2,a,b+1));

}

//4 Longest common substrings in two string

int LCSubStr(string &str1,string &str2,int a=0,int b=0,int cout=0)
{
      if(a>=str1.length() || b>=str2.length())
    {
        return 0;
    }
    if(str1[a]==str2[b])
    {
        
        //if match increase both a and b
        cout+=1;
        return max(cout,LCSubStr(str1,str2,a+1,b+1,cout));
    }
    return max(cout,max(LCSubStr(str1,str2,a+1,b,0),LCSubStr(str1,str2,a,b+1,0)));
}

//5 sum digit


int sumDigits(int value)
{
     if(value==0)
     {
         return 0;
     }
    int r=value%10;
    value/=10;
    return r+sumDigits(value);
}


//6 group sum


bool groupSum(int startIndex,vector<int> &data,int target)
{
     if(startIndex >= data.size())
        return target == 0;
         
    if(groupSum(startIndex+1, data, target - data[startIndex]))
        return true;
    if(groupSum(startIndex+1, data, target))
        return true;
                              
    return false;
    
}

working sample->

Comments

Popular posts from this blog

Better Memory management with PixiJS or How to manage cpu and cpu memory in PixiJS.

PixiJS is my favorite framework when i am looking for a web games specially for mobile or desktop  PixiJS is fast blazing fast and you can get a decent FPS even on older device.   so here is my optimization techniques for PixiJs 1. manage your sprites in a better way use spritesheet to reduce the draw calls create big sprite sheet which contain multiple sprites can be draw in gpu with a single draw call. use TexturePacker  https://www.codeandweb.com/texturepacker  best tool when its comes to spritesheet 2. for floating point calculation round off calculation for example let  speed = 0.75 ; let  position = 100 ; console . log ( Math . round ( speed * position )) 3. don't create very big canvas when u need a big canvas size game just try to create a small canvas and translate it. 4. its very important one managing TextureCache in memory you can get all TextureCache list by using  Object.entries(PIXI.utils.TextureCache); so even you use ap...

adding particles Effect in pixijs using https://pixijs.io/pixi-particles-editor/

adding particle in pixijs is very easy using the below tool more information can be found below https://github.com/pixijs/pixi-particles https://pixijs.io/pixi-particles-editor/ required packages  /// < reference path = "node_modules/pixi-particles/ambient.d.ts" /> import 'pixi-particles' code of particle delcare a     global variable   private emitter ?: Emitter ; const img = PIXI . Texture . from ( "./assets/images/particle.png" ); this . emitter = new Emitter ( this ,[ img ],{ "alpha" : { "start" : 0.62 , "end" : 0.39 }, "scale" : { "start" : 0.1 , "end" : 0.9 , "minimumScaleMultiplier" : 1.25 }, "color" : { "start" : "#ffff8f" , "end" : ...