Advertisement
Caio_25

Moedas

May 1st, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. #define MAX 50001
  4.  
  5. int v[101];
  6.  
  7. int maior(int a, int b, int c);
  8.  
  9. int moedas(int m, int n);
  10.  
  11. int main()
  12. {
  13.     int m, n, resul;
  14.  
  15.  
  16.     while( 1 )
  17.     {
  18.          scanf("%d", &m);
  19.          if(m == 0)
  20.          {
  21.              break;
  22.          }
  23.          scanf("%d", &n);
  24.  
  25.          for(int i = 0; i < n; i++)
  26.         {
  27.             scanf("%d", &v[i]);
  28.  
  29.         }
  30.  
  31.         resul = (-1) * moedas(m, n - 1);
  32.  
  33.         if(resul > m)
  34.         {
  35.             printf("Impossivel\n");
  36.         }
  37.  
  38.         else
  39.         {
  40.             printf("%d\n", resul);
  41.  
  42.         }
  43.     }
  44.  
  45.  
  46.  
  47. }
  48.  
  49. int maior(int a, int b, int c)
  50. {
  51.     int maior;
  52.  
  53.     if(a > b)
  54.     {
  55.         maior = a;
  56.     }
  57.  
  58.     else
  59.     {
  60.         maior = b;
  61.     }
  62.  
  63.     if(c > maior)
  64.     {
  65.         maior = c;
  66.     }
  67.  
  68.     return(maior);
  69. }
  70.  
  71. int moedas(int m, int n)
  72. {
  73.     if(n < 0)
  74.     {
  75.         return((-1) * MAX);
  76.     }
  77.  
  78.     if(m == 0)
  79.     {
  80.         return(0);
  81.     }
  82.  
  83.     if(v[n] <= m)
  84.     {
  85.         return(maior(-1 + moedas(m - v[n], n), -1 + moedas(m - v[n], n - 1), moedas(m, n-1)));
  86.     }
  87.  
  88.     else
  89.     {
  90.         return(moedas(m, n-1));
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement