Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1.  
  2.  /*
  3. Napišite program koji pronalazi sve mogućnosti stavljanja + ili - ili ništa između
  4. brojeva 1, 2, …, 9 (u tom poretku)
  5. tako da je rezultat neki zadani cijeli broj x. Broj x treba učitati s tipkovnice.
  6.  
  7. Potrebno je ispisati samo koliko postoji takvih mogućnosti.
  8.  
  9. Primjer:
  10. Input: 100
  11. Output: 11
  12. ...zato što postoji 11 kombinacija kojima se može dobiti broj 100. Jedno od tih 11
  13. rješenja je npr.
  14. 1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100
  15. */
  16.  
  17. #include <iostream>
  18. using namespace std;
  19.  
  20. int x;
  21.  
  22. int brojNacina(int n, int broj, int suma) {
  23.     if (n == 9) {
  24.         return suma + broj == x;
  25.     }
  26.    
  27.     int iduci = n + 1;
  28.     int nacina = 0;
  29.    
  30.     nacina += brojNacina(iduci, iduci, suma + broj);
  31.     nacina += brojNacina(iduci, -iduci, suma + broj);
  32.    
  33.     broj *= 10;
  34.     if (broj < 0)
  35.         broj -= iduci;
  36.     else
  37.         broj += iduci;
  38.    
  39.     nacina += brojNacina(iduci, broj, suma);
  40.     return nacina;
  41. }
  42.  
  43. int main() {
  44.     cin >> x;
  45.     cout << brojNacina(1, 1, 0) << endl;
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement