Posts

Showing posts from October, 2021

0-1 knapsack(Dynamic Programming).

  #include <bits/stdc++.h> using namespace std ; #define shailesh ios :: sync_with_stdio ( false ); cin. tie ( 0 ); cout. tie ( 0 ); #define ll long long int #define vi vector < int > #define pii pair < int , int > #define vii vector < pii > #define rep ( i , a , b ) for ( int i = a; i < b; i ++ ) #define ff first #define ss second const int N = 1 e 3 + 2 , MOD = 1 e 9 + 7 ; int val[N], wt[N]; int dp[N][N]; int Knapsack ( int n , int w ){     if ( w <= 0 )     return 0 ;     if ( n <= 0 )     return 0 ;     if (dp[ n ][ w ] !=- 1 )     return dp[ n ][ w ];     if ( w < wt[ n - 1 ])        dp[ n ][ w ] = Knapsack ( n - 1 , w );     else          dp[ n ][ w ] = max ( Knapsack ( n - 1 , w ), Knapsack ( n - 1 , w - wt[ n - 1 ]) + val[ n - 1 ]);         return dp[ n ][ w ]; } in...

Greedy algorithm Fractional Knapsack

  #include <bits/stdc++.h> using namespace std ; #define shailesh ios :: sync_with_stdio ( false ); cin. tie ( 0 ); cout. tie ( 0 ); #define ll long long int #define vi vector < int > #define pii pair < int , int > #define vii vector < pii > #define rep ( i , a , b ) for ( int i = a; i < b; i ++ ) #define ff first #define ss second bool compare ( pii p1 , pii p2 ){     double v1 = ( double ) p1 . ff / p1 . ss ;     double v2 = ( double ) p2 . ff / p2 . ss ;     return v1 > v2; } int main (){     shailesh         int n;    cin >> n;     vii a(n);     rep (i, 0 , n)    {        cin >> a [ i ] . ff >> a [ i ] . ss ;    }     int w;    cin >> w;     sort (a. begin (), a. end (), compare );     int ans = 0 ;     rep (i, 0 , n)...

Greedy_algorithm Indian coin change problem

  #include <bits/stdc++.h> using namespace std ; #define shailesh ios :: sync_with_stdio ( false ); cin. tie ( 0 ); cout. tie ( 0 ); #define ll long long int #define vi vector < int > #define pii pair < int , int > #define vii vector < pii > #define rep ( i , a , b ) for ( int i = a; i < b; i ++ ) #define ff first #define ss second int main (){     shailesh     int n;    cin >> n;     vi a(n);     rep (i, 0 , n){        cin >> a [ i ] ;    }     int x;    cin >> x;     sort (a. begin (), a. end (), greater < int >());     int ans = 0 ;     rep (i, 0 , n)    {        ans += x / a [ i ] ;        x -= x / a [ i ] * a [ i ] ;    }    cout << ans << endl ;     return 0 ; } // input 10 1 2 5 10...

HeapSort

  #include <bits/stdc++.h> using namespace std ; #define rep ( i , a , b ) for ( int i = a; i < b; i ++ ) void heapify ( vector < int > & a , int n , int i ){     int maxIdx = i ;     int l = 2 * i + 1 ;     int r = 2 * i + 2 ;     if (l < n && a [ l ] > a [ maxIdx ] )     maxIdx = l;     if (r < n && a [ r ] > a [ maxIdx ] )     maxIdx = r;     if (maxIdx != i ){         swap ( a [ i ] , a [ maxIdx ] );         heapify ( a , n , maxIdx);     } } void heapsort ( vector < int > & a ){     int n = a . size ();     for ( int i = n / 2 - 1 ; i >= 0 ; i -- ){         heapify ( a , n, i);     }     for ( int i = n - 1 ; i > 0 ; i -- ){         swap ( a [ 0 ] , a [ i ] );         heap...

queue using stack

  #include <bits/stdc++.h> using namespace std ; class que {     stack < int > s1;     stack < int > s2;     public:     void push ( int x ){         s1. push ( x );     }     int pop (){         if (s1. empty () and s2. empty ()){             cout << "Queue is empty " << endl ;             return - 1 ;         }         if (s2. empty ()){             while ( ! s1. empty ()){                 s2. push (s1. top ());                 s1. pop ();             }         }         int topval = s2. top ();         s2. pop ();         retu...

Queue data structure in c++

  #include <iostream> using namespace std ; #define n 10 class queue {     int * arr;     int front;     int back;     public:       queue (){          arr = new int [ n ];          front =- 1 ;          back =- 1 ;      }       void push ( int x ){           if (back == n - 1 ){              cout << "queue is not empty " << endl ;               return ;          }          back ++ ;          arr[back] = x ;           if (front ==- 1 ){              front ++ ;          }      }       void pop (){     ...

Stack data structure in c++

  #include <iostream> using namespace std ; #define n 100 class stack {     int * arr;     int top;     public:     stack (){         arr = new int [ n ];         top =- 1 ;     }     void push ( int x ){         if (top == n - 1 ){             cout << "stack overflow " << endl ;             return ;         }         top ++ ;         arr[top] = x ;     }     void pop (){         if (top ==- 1 ){             cout << "no element to pop" << endl ;             return ;         }         top -- ;     }     int Top (){         if (to...

linked_list inc ++

  // linked list implementation in c++ #include <bits/stdc++.h> using   namespace   std ; class   node {       public:       int  data;       node *  next;       node ( int   val ){          data = val ;          next = NULL ;      } }; void   insertAtTail ( node *   & head ,  int   val ){      node *  n = new   node ( val );      if ( head == NULL ){          head = n;          return ;     }      node *  temp = head ;      while (temp->next != NULL ){       temp...