Sunday, 21 September 2025

VIDEO_4 RECURSION

 #include<iostream>

#include<string>


#include <vector>

#include <numeric> 

using namespace std;

/*this function generates all binary strings of given length without consequitive 1 */

void binarystring(string ans,int n){

    if(ans.length()==n){

        cout<<ans<<endl;

        return;

    }

   

    binarystring(ans+"0",n);

     if(ans==""||ans[(ans.length()-1)]!='1'){

        binarystring(ans+"1",n);

    }

}

void cs( vector<int> v,int arr[],int tr,int n,int idx){

  int sum = accumulate(v.begin(), v.end(), 0);


    if(tr-sum < 0) {

        return;

    }

    if(sum == tr) {

        for(int x : v){

            cout << x << " ";

        }

        cout << endl;

        return;

    }

    for (int i=idx;i<n;i++){

        vector<int> temp = v;       // make a copy of v

        temp.push_back(arr[i]);     // add current element

        cs(temp, arr, tr, n,i); 

        

    }

}

int main(){

    // bs("",4);

     vector<int> v;

     int arr[]={2,3,5};

cs( v,arr,8,3,0);

    // int sum = accumulate(v.begin(), v.end(), 0);


    // cout << "Sum = " << sum; 

}

Saturday, 20 September 2025

RECURSION_4 VIDEO

 #include<iostream>

#include<string>

using namespace std;

void printsub(string ans,string str,int idx=0){

    if(idx==str.length()){

        cout<<ans<<endl;

        return;

    }

    if(ans==""||(str[idx-1]==ans[ans.length()-1])){

          printsub(ans+str[idx],str,idx+1);

    }

    

  

    printsub(ans,str,idx+1);

}

int palindrome(int arr[],int n){

    

    int i=0;

    int j=n-1;

    while(i!=j){

        if(arr[i]==arr[j]){

            i++;

            j--;

        }

        else{

            return -1;

            break;

            

        }

    }

    return 1;

}

int min(int i ,int j){

    if(i<j) return i;

    return j;

}

int hcf(int one,int two){

    int mini=min(one,two);

    int c=1;

    for (int i =2;i<=mini;i++){

        if(one%i==0&&two%i==0){

            

         c=i;

         

        }

    }

    cout<<" common divisor "<<c;

    return 0;

}

void euclid(int a ,int b){

    if(a==0){

cout<<"gcd is "<<b;

        return ;

    }

     euclid(b%a,a);


}

void gcdeuclid(int a,int b){

    if(a<b){

        euclid(a,b);

    }

    else{

        euclid(b,a);

        

    }

}


int main(){

    // printsub("","abc");

    // int arr[]={1,2,3,3,1};

    // int n =sizeof(arr)/sizeof(arr[0]);

    // int flag=palindrome(arr,n);

    // cout<<flag;

    // hcf(4,8);

    gcdeuclid(1000000001,10000);

}

Thursday, 18 September 2025

RECURSION PROBLEMS

#include<iostream>

using namespace std;

void pr(int n,int s=1){

    if(s>n) return;

    cout<<s<<endl;

    pr(n,++s);

}

int power(int n,int a){

    if(a==1) return n;

    return n*power(n,a-1);

    

}

int fibo(int n){

    if(n==1||n==2)return 1;

    return fibo(n-1)+fibo(n-2);

}

int powlogarithmic(int n,int a){

    int r=a%2;

    if(a==1) return n;

    if(a==2) return n*n;

    int l=powlogarithmic(n,a/2);

   if(r==0) return l*l;

   return l*l*n;

}

/// "Given a staircase with n steps, and you can climb either 1 or 2 steps at a time, how many distinct ways are there to reach the top?"////////

int stair(int n,int s=0){

   

    if(s>=n-1) return 1;

    return stair(n,s+1)+stair(n,s+2);

}


int main(){

//   cout<<power(3,4)<<endl;

//   cout<<fibo(6)<<endl;

//   cout<<powlogarithmic(3,17);

   cout<<stair(4);

SDE floyd-warshall algorithm

 // User function template for C++ class Solution {   public:     void floydWarshall(vector<vector<int>> &dist) {         //...