Advertisement
Guest User

Untitled

a guest
Oct 21st, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. int ObliczNas(bool* tab,int* s,int m)//obliczanie poziomu nasłonecznienia w habitacie
  7. {
  8. int wynik=0;
  9.  
  10. for(int i=0;i<m;i++)
  11. if(tab[i] == true)
  12. wynik=wynik+s[i];
  13.  
  14. return wynik;
  15.  
  16. }
  17.  
  18. int ObliczKoszt(bool* tab,int* c,int m)//obliczanie kosztu wybudowania luster w habitacie
  19. {
  20. int wynik=0;
  21. for(int i=0;i<m;i++)
  22. if(tab[i] == true)
  23. wynik=wynik+c[i];
  24.  
  25. return wynik;
  26.  
  27. }
  28. void depresja(int poziom,int* naslonecznienie,int *koszt,bool* tab_logiczna,int m,int &minimum)
  29. {
  30.  
  31. int koszt=ObliczKoszt(tab_logiczna,koszt,poziom);//zmienna z przypisanym kosztem wybudowania luster w habitacie
  32.  
  33.  
  34. if(ObliczNas(tab_logiczna,naslonecznienie,poziom) == 0 && koszt<minimum && koszt!=0)//sprawdzanie czy nasłonecznienie jest idealne
  35. minimum = koszt;
  36.  
  37. tab_logiczna[poziom] = false;
  38.  
  39. if(poziom<m && koszt<minimum)//sprawdzanie czy wykonano sprawdzania dla wszystkich zestawów danych
  40. depresja(poziom+1,naslonecznienie,koszt,tab_logiczna,m,minimum);
  41.  
  42. tab_logiczna[poziom] = true;
  43. if(poziom<m && koszt<minimum)//sprawdzanie czy wykonano sprawdzania dla wszystkich zestawów danych
  44. depresja(poziom+1,naslonecznienie,koszt,tab_logiczna,m,minimum);
  45.  
  46. }
  47.  
  48. int main()
  49. {
  50. ios_base::sync_with_stdio(0);
  51. int ile_hab;
  52. cin>>ile_hab;
  53. int m,minimum;
  54.  
  55.  
  56. int* naslonecznienie;
  57. int* koszt;
  58. bool* tab_logiczna;
  59.  
  60. for(int i=0;i<ile_hab;++i)//petla sparwdzajaca ilosc habitatow/ilosc zestawow danych
  61. {
  62. cin>>m;
  63. minimum=10001;
  64.  
  65. naslonecznienie= new int[m];//inicjalizowanie tablic dynamicznych o rozmiarze m
  66. koszt= new int[m];
  67. tab_logiczna=new bool[m];
  68.  
  69. for(int j=0;j<m;++j)//wpisanie danych do tablic
  70. {
  71. cin>>naslonecznienie[j]>>koszt[j];
  72. tab_logiczna[j]=true;
  73. }
  74.  
  75.  
  76. depresja(0,naslonecznienie,koszt,tab_logiczna,m,minimum);
  77.  
  78. if(minimum != 10001)//wypisanie minimalnego kosztu
  79. cout<<minimum<<endl;
  80. else cout<<"DEPRESJA"<<endl;
  81.  
  82. }
  83.  
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement