Posts

Showing posts from August, 2024

queens

  #include <stdio.h> #include <stdlib.h> #include <math.h> int board [ 20 ],count; void queen ( int row , int n ); int main (){   int n;   printf ( "Enter the no. of queen: " );   scanf ( " %d " , & n);   queen ( 1 ,n);   return 0 ; } void print ( int n ){   int i,j;   printf ( "Solution: %d \n " , ++ count);   for (i = 1 ;i <= n; ++ i){     printf ( " \t %d " ,i);   }   for (i = 1 ;i <= n;i ++ ){     printf ( " \n\n %d " ,i);     for (j = 1 ;j <= n; ++ j){       if ( board [i] == j)         printf ( " \t Q" );       else         printf ( " \t -" );     }   } } int place ( int row , int column ){   int i;   for (i = 1 ;i <= row - 1 ;i ++ ){     if ( board [i] == column)       return 0 ;     else       if ( abs (...

sum_subset

  #include <stdio.h> #include <stdbool.h> #define max 100 void subsetSum ( int set [] , int subset [] , int n , int subsize , int total , int nodecount , int sum ){   if (total == sum){     printf ( "Subset found:{" );     for ( int i = 0 ;i < subsize;i ++ ){       printf ( " %d " , subset [i]);     }     printf ( "} \n " );     return ;   }   else {     for ( int i = nodecount;i < n;i ++ ){       subset [subsize] = set [i];       subsetSum (set,subset,n,subsize + 1 ,total + set [i],i + 1 ,sum);     }   } } int main (){   int set [max];   int subset [max];   int n,sum;   printf ( "Enter the no. of elements in set:" );   scanf ( " %d " , & n);   printf ( "Enter the elements: \n " );   for ( int i = 0 ;i < n;i ++ ){     scanf ( " %d " , & set [i]);   } ...

warshal

  #include <stdio.h> #include <math.h> int max ( int , int ); void warshal ( int p [ 10 ][ 10 ], int n ) {   int i, j, k;         for (k = 1 ; k <= n; k ++ )             for (i = 1 ; i <= n; i ++ )                 for (j = 1 ; j <= n; j ++ )                     p [i][j] = max ( p [i][j], p [i][k] && p [k][j]);  } int max ( int a , int b ) {         if (a > b)             return (a);         else             return (b); } void main () {         int p [ 10 ][ 10 ] = { 0 }, n, e, u, v, i, j;         printf ( " \n Enter the number of vertices:" );         scanf ( " %d " , & n);         printf ( "...

floyds

  #include <stdio.h> #include <stdlib.h> int min ( int a , int b ); void floyds ( int p [ 10 ][ 10 ], int n ){ int i, j, k;         for (k = 1 ; k <= n; k ++ )             for (i = 1 ; i <= n; i ++ )                 for (j = 1 ; j <= n; j ++ )                     p [i][j] = min ( p [i][j], p [i][k] + p [k][j]); } int min ( int a , int b ){     if (a < b)         return a;     else         return b; } int main (){     int p [ 10 ][ 10 ],w,n,e,u,v,i,j;     printf ( " \n Enter no. of vertices: " );     scanf ( " %d " , & n);     printf ( " \n Enter the no. of edges:" );     scanf ( " %d " , & e);       for (i = 1 ;i <= n;i ++ )         for (j = 1...

prims

    #include <stdio.h> #include <limits.h> #define V_MAX 100 int minKey ( int key [] , int mstSet [] , int V ) {     int min = INT_MAX, min_index;     for ( int v = 0 ; v < V; v ++ )         if ( mstSet [v] == 0 && key [v] < min)             min = key [v], min_index = v;     return min_index; } void printMST ( int parent [] , int V , int graph [V_MAX][V_MAX]) {     printf ( "Edge Weight \n " );     for ( int i = 1 ; i < V; i ++ )         printf ( " %d - %d %d \n " , parent [i], i, graph [i][ parent [i]]); } void primMST ( int graph [] [V_MAX], int V ) {     int parent [V_MAX];     int key [V_MAX];     int mstSet [V_MAX];     for ( int i = 0 ; i < V; i ++ ) {         key [i] = INT_MAX;         mstSet [i] = ...

kruskal

  #include <stdio.h>   #define I 32767  // Infinity #define V 7  // # of vertices in Graph #define E 9  // # of edges in Graph void PrintMCST ( int T [] [V - 1 ], int A [] [E]){     printf ( "The MCST edges is: \n " );     for ( int i = 0 ; i < V - 1 ; i ++ ){         printf ( "[ %d ]-------[ %d ] \n " , T [ 0 ][i], T [ 1 ][i]);     } }   // Set operations: Union and Find void Union ( int u , int v , int s [] ){     if ( s [u] < s [v]){         s [u] += s [v];         s [v] = u;     } else {         s [v] += s [u];         s [u] = v;     } }   int Find ( int u , int s [] ){     int x = u;     int v = 0 ;       while ( s [x] > 0 ){         x = s [x];     }       while (...

merge_sort

  #include <stdio.h> #include <stdlib.h> #include <time.h> void merge ( int a [] , int l , int mid , int h ){   int i,j,k;   int b [h + 1 ];   i = l,j = mid + 1 ,k = l;   while (i <= mid && j <= h){     if ( a [i] < a [j]){       b [k ++ ] = a [i ++ ];     }     else       b [k ++ ] = a [j ++ ];   }   for (;i <= mid;i ++ ){     b [k ++ ] = a [i];   }   for (;j <= mid;j ++ ){     b [k ++ ] = b [i];   }   for (i = l;i <= h;i ++ ){     a [i] = b [i];   } } void mergeSort ( int a [] , int l , int h ){   int mid;   if (l < h){     mid = (l + h) / 2 ;     mergeSort (a,l,mid);     mergeSort (a,mid + 1 ,h);     merge (a,l,mid,h);   } } int main (){   clock_t start_time = clock ();   int n;   printf ( "Enter the no...

quick_Sort

  #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <time.h> void swap ( int * x , int * y ){   int temp = * x;   * x = * y;   * y = temp; } int partition ( int a [] , int l , int h ){   int pivot = a [l];   int i = l ,j = h;   do {     do {i ++ ;} while ( a [i] <= pivot);     do {j -- ;} while ( a [j] > pivot);     if (i < j){       swap ( & a [i], & a [j]);     }   } while (i < j);   swap ( & a [l], & a [j]);   return j; } void Quicksort ( int a [] , int l , int h ){   int j;   if (l < h){     j = partition (a,l,h);     Quicksort (a,l,j);     Quicksort (a,j + 1 ,h);   } } int main (){   clock_t start_time = clock ();   int n;   printf ( "Enter the no. of elements: " );   scanf ( " %d " , & n);   int a [n]; ...

selection_Sort

  #include <stdio.h> #include <stdlib.h> #include <time.h> void swap ( int * x , int * y ){   int temp = * x;   * x = * y;   * y = temp; } void selectionSort ( int a [] , int n ){   int i,j,k;   for (i = 0 ;i < n - 1 ;i ++ ){     for (j = k = i;j < n;j ++ ){       if ( a [j] < a [k]){         k = j;       }     }     swap ( & a [i], & a [k]);   } } int main (){   clock_t start_time = clock ();   srand ( time ( NULL ));   int n;   printf ( "Enter the no. of element: " );   scanf ( " %d " , & n);   int a [n];   for ( int i = 0 ;i < n;i ++ ){     a [i] = rand () % 100 ;   }   selectionSort (a,n);   clock_t stop_time = clock ();   printf ( "sorted elements are: " );   for ( int i = 0 ;i < n;i ++ ){     printf ( " %d " , a [i]); ...

knapsack_Greedy

  #include <stdio.h> int main (){   float weight [ 100 ], profit [ 100 ], ratio [ 100 ],totalvalue = 0 ,temp,capacity,amount;   int   n,i,j;   printf ( "Enter the no of items:" );   scanf ( " %d " , & n);   for (i = 0 ;i < n;i ++ ){     printf ( "Enter the profit and weight: " );     scanf ( " %f%f " , & profit [i], & weight [i]);   }   printf ( "Enter the capacity: " );   scanf ( " %f " , & capacity);   for (i = 0 ;i < n;i ++ ){     ratio [i] = profit [i] / weight [i];   }   for (i = 0 ;i < n;i ++ ){     for (j = i + 1 ;j < n;j ++ ){       if ( ratio [i] < ratio [j]){         temp = ratio [j];         ratio [j] = ratio [i];         ratio [i] = temp;         temp = weight [j];         weight [j] = weight [i];     ...

knapsack_dynamic

  #include <stdio.h> int max ( int a , int b ){   return (a > b) ? a : b; } int knapsack ( int W , int wt [] , int val [] , int n ){   int i,w;   int k [n + 1 ][W + 1 ];   for (i = 0 ;i <= n;i ++ ){     for (w = 0 ;w <= W;w ++ ){       if (i == 0 || w == 0 ){         k [i][w] = 0 ;       }       else if ( wt [i - 1 ] <= w){         k [i][w] = max ( val [i - 1 ] + k [i - 1 ][w - wt [i - 1 ]], k [i - 1 ][w]);       }       else {         k [i][w] = k [i - 1 ][w];       }     }   }   return k [n][W]; } int main (){   int val [ 100 ], wt [ 100 ];   int W,n;   printf ( "Enter the number of items: " );   scanf ( " %d " , & n);   printf ( "Enter the values and weights of %d items: \n " ,n);   for ( int i = 0 ;i < ...

topological_Sorting

  #include <stdio.h> void DFS ( int G [] [ 7 ], int start , int n ) {     static int visited [ 7 ] = { 0 };     if ( visited [start] == 0 ) {         printf ( " %d " , start);           visited [start] = 1 ;         for ( int j = 1 ; j < n; j ++ ) {             if ( G [start][j] == 1 && visited [j] == 0 ) {                 DFS (G, j, n);             }         }     } } int main () {     int G [ 7 ][ 7 ] = {{ 0 , 0 , 0 , 0 , 0 , 0 , 0 },                    { 0 , 0 , 1 , 1 , 0 , 0 , 0 },                    { 0 , 1 , 0 , 0 , 1 , 0 , 0 },                    { 0 , 1 , 0 , 0 , 1 ,...

dijsktra

  #include <stdio.h> #include <stdbool.h> #include <limits.h> #define max_vert 10 #define INF INT_MAX int minDistance ( int dist [] , bool sptSet [] , int V ) {     int min = INF, min_index;     for ( int v = 0 ; v < V; v ++ ) {         if ( ! sptSet [v] && dist [v] <= min) {             min = dist [v];             min_index = v;         }     }     return min_index; } void printSolution ( int dist [] , int V ) {     printf ( "Vertex \t\t Distance from Source \n " );     for ( int i = 0 ; i < V; i ++ ) {         printf ( " %d \t\t %d \n " , i, dist [i]);     } } void dijkstra ( int graph [max_vert][max_vert], int src , int V ) {     int dist [max_vert];     bool sptSet [max_vert];     for ( int ...