Advertisement
Guest User

garekszparek

a guest
Nov 20th, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. const int N = 5;
  4. int t[N] = { 1, 3, 5, 8, 20 };
  5. bool tab1[N] = { 0 };
  6. bool tab2[N] = { 0 };
  7. /*1. Bierzemy ciężarek na pustą część
  8.   2. Nie Bierzemy ciężarka na żadną część
  9.   3. Bierzemy ciężarek na zajętą część*/
  10. bool waga(int n, int j, int czy_zabrany = 0) {              // dany do pustej - 1 dany do kruszca - 2 nie brany nigdzie - 3
  11.     if (czy_zabrany == 1) {
  12.         tab1[j - 1] = true;
  13.         tab2[j - 1] = false;
  14.     }
  15.     else if (czy_zabrany == 2) {
  16.         tab1[j - 1] = false;
  17.         tab2[j - 1] = true;
  18.     }
  19.     else if (czy_zabrany == 3){
  20.         tab1[j - 1] = tab2[j - 1] = false;
  21.     }
  22.     if (n == 0) {
  23.         cout << "Dodane do pustego ciezarki: ";
  24.         for (int i = 0; i < N; i++) {                       // wypisanie ciężarków, dla których wartość bool w tablicy tab jest równa "true"
  25.             if (tab1[i]) { cout << t[i] << " "; }
  26.         }
  27.         cout << "\nDodane do kruszca ciezarki: ";
  28.         for (int i = 0; i < N; i++) {
  29.             if (tab2[i]) { cout << t[i] << " "; }
  30.         }
  31.         cout << endl;
  32.     }
  33.     if (j == N) {
  34.         return false; }
  35.     return (waga(n - t[j], j + 1, 1) || waga(n + t[j], j + 1, 2) || waga(n, j + 1, 3));
  36. }
  37.  
  38. int main() {
  39.    
  40.     cout << "\n" << waga(10, 0);
  41.    
  42.  
  43.  
  44.  
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement