Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. VERSIONE ORIGINALE
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. void calcolaResto(int n, int *val, int *disp, int r);
  7. int calcolaRestoR(int pos, int n, int *val, int *dispR, int *sol, int r, int k);
  8. int check(int *sol, int n, int *val, int r);
  9. int numeroMonete(int *sol, int n);
  10. int main()
  11. {
  12.  
  13. int n = 3, r;
  14. int val[3] = {1,10,25};
  15. int disp[3] = {10,3,2};
  16.  
  17. r = 30;
  18.  
  19. calcolaResto(n, val, disp, r);
  20. return 0;
  21. }
  22. void calcolaResto(int n, int *val, int *disp, int r){
  23. int i, j , k;
  24. int *sol, *dispR;
  25. sol = calloc(n,sizeof(int));
  26. dispR = malloc(n*sizeof(int));
  27. for(j=0; j<n; j++)
  28. dispR[j] = disp[j];
  29. for(k=1; k<n; k++){
  30. if(calcolaRestoR(0,n,val,dispR,sol,r,k))
  31. break;
  32. }
  33. i = 0;
  34. i = numeroMonete(sol ,n);
  35.  
  36. printf("Numero monete: %d", i);
  37. return;
  38. }
  39.  
  40. int calcolaRestoR(int pos, int n, int *val, int *dispR, int *sol, int r, int k)
  41. {
  42. int i, ris;
  43. if(pos >= k){
  44. if(check(sol, n, val, r))
  45. return 1;
  46. }
  47. for(i = 0; i < n; i++){
  48. if(dispR[i]>0){
  49. dispR[i]--;
  50. sol[i]++;
  51. ris = calcolaRestoR(pos+1,n,val,dispR,sol,r,k);
  52. if(ris == 1) return 1;
  53. dispR[i]++;
  54. sol[i]--;
  55. }
  56. }
  57. return ris;
  58. }
  59. int check(int *sol, int n, int *val, int r){
  60. int i, conta, ris;
  61. ris = 0;
  62. for(i = 0; i < n; i++){
  63. conta = sol[i];
  64. while(conta > 0){
  65. ris += val[i];
  66. conta--;
  67. }
  68. }
  69. if(ris == r)
  70. return 1;
  71. return 0;
  72. }
  73. int numeroMonete(int *sol, int n){
  74. int ris, i;
  75. ris = 0;
  76. for(i = 0; i < n; i++){
  77. ris += sol[i];
  78. }
  79. return ris;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement