Advertisement
cmiN

andrei

Apr 11th, 2011
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. int n,x[10];
  4. void afisare()
  5. {int i;
  6. for(i=0;i<n;i++) // de la 0 la n - 1 sunt pozitiile
  7.     cout<<x[i]; // pt ce spatiu ? un numar are spatii intre cifre ? :/
  8.     cout << endl; // cate o solutie pe un rand ca asa nu mai intelegi nimic
  9. }
  10. int valid(int i)
  11. {
  12. //if(x[1]==0) return 0; // nu mai ai nevoie intotdeauna cifra de start va fi diferita de 0 mai ales ca incepem de pe poz 0
  13. if(x[i]>x[i-1]) return 0; // cand se apeleaza valid(1) x[1] se compara cu x[0] asta inseamna ca
  14.  // trebuie completat vectorul de pe pozitia 0 asa ca ne ducem in main()
  15. if (i >= 2) { // ce ne facem cand i == 1 daca avem x[i-2] atunci vom avea x[-1] asa ceva vere nu se poate :(
  16. if(x[i]==x[i-1]-1 && x[i]==x[i-2]-2) return 0;
  17. }
  18. return 1;
  19. }
  20. void back(int i)
  21. { int j;
  22. for(j=1;j<=9;j++) { // nu conteaza cum pleaca j .. important e sa ia valori intre 1 si 9 inclusiv
  23.     x[i]=j;
  24.       if(valid(i)==1) {
  25.          if(i==n - 1) afisare(); // daca n = 4 atunci avem completate pozitiile 0 1 2 3 adica cand i == 3 deja afisam adica i == n-1
  26.          else back(i+1);}
  27. }
  28. }
  29. int main()
  30. { cout<<"n=";cin>>n;
  31. for (int i = 1; i < 10; ++i) { // pt fiecare numar de la 1 la 9 pe pozitia de start executam
  32.     x[0] = i;
  33.     if (n == 1) afisare();
  34.     else back(1);
  35. }
  36. return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement