Advertisement
edutedu

bancnote problema platilor

Dec 4th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. int S, tip[100], x[100], n, nrsol, k, s;
  8.  
  9. void init(int k)
  10. {
  11. x[k]=-1;
  12. }
  13.  
  14. int existaSuccesor(int k)
  15. {
  16. return k<=n && x[k]<S/tip[k];
  17. }
  18.  
  19. int cont(int k)
  20. {
  21. s=0;
  22. for(int i=1; i<=k; i++)
  23. s+=x[i]*tip[i];
  24. return s<=S;
  25. }
  26.  
  27. int solutie(int k)
  28. {
  29. return s==S;
  30. }
  31.  
  32. void tipar()
  33. {
  34. nrsol++;
  35. for(int i=1; i<=n; i++)
  36. if(x[i])
  37. cout<<x[i]<<" bancnote de "<<tip[i]<<endl;
  38. cout<<endl<<endl;
  39. system("pause");
  40. }
  41.  
  42. void back(int k)
  43. {
  44. init(k);
  45. while(existaSuccesor(k))
  46. {
  47. x[k]=x[k]+1;
  48. if(cont(k))
  49. if(solutie(k))
  50. tipar();
  51. else
  52. back(k+1);
  53. }
  54. }
  55.  
  56. int main()
  57. {
  58. ifstream f("bac.in");
  59. cout<<"S="; f>>S;
  60. cout<<"numarul de tipuri de bancnote: "; f>>n;
  61. cout<<"valorile bancnotelor: ";
  62. for(int i=1; i<=n; i++)
  63. f>>tip[i];
  64. back(1);
  65. cout<<"Nr. solutii: "<<nrsol;
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement