Advertisement
coffeebeforecode

DAA Lab DA 2 PP 2.1 Q1

Sep 18th, 2021
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void sortDesc(int arr[], int n){
  5.     int i, j, t;
  6.     for(i = 0; i < n-1; i++){
  7.         for(j = i+1; j < n; j++){
  8.             if (arr[i] < arr[j]){
  9.                 t = arr[i];
  10.                 arr[i] = arr[j];
  11.                 arr[j] = t;
  12.             }
  13.         }
  14.     }
  15. }
  16.  
  17. int coinsUsed(int m, int d[], int n, int used[]){
  18.     if (m <= 0){
  19.         return 0;
  20.     }
  21.     int i;
  22.     for (i = 0; i < n; i++){
  23.         if (m >= d[i]){
  24.             used[i]++;
  25.             return 1 + coinsUsed(m-d[i], d, n, used);
  26.         }
  27.     }
  28. }
  29.  
  30.  
  31. void solve(){
  32.     // input
  33.     int m;
  34.     int n;
  35.     printf("Enter the amount M: ");
  36.     scanf("%d", &m);
  37.     printf("\nEnter the number of denomination: ");
  38.     scanf("%d", &n);
  39.     int* d = (int*)malloc(sizeof(int) * n);
  40.     int* used = (int*)malloc(sizeof(int) * n);
  41.     int i;
  42.     printf("\nEnter the denominations: ");
  43.     for(i = 0; i < n; i++){
  44.         scanf("%d", &d[i]);
  45.         used[i] = 0;
  46.     }
  47.  
  48.     // sort the denominations in descending order
  49.     sortDesc(d, n);
  50.  
  51.     // solving using recursive greedy algo
  52.     int c = coinsUsed(m, d, n, used);
  53.  
  54.     printf("\nTotal coins = %d (", c);
  55.     for(i = 0; i < n-1; i++){
  56.         while(used[i] > 0){
  57.             printf(" %d ", d[i]);
  58.             used[i]--;
  59.         }
  60.     }
  61.     printf(")");
  62. }
  63.  
  64. int main(){
  65.     solve();
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement