Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- int n,x[10];
- void afisare()
- {int i;
- for(i=0;i<n;i++) // de la 0 la n - 1 sunt pozitiile
- cout<<x[i]; // pt ce spatiu ? un numar are spatii intre cifre ? :/
- cout << endl; // cate o solutie pe un rand ca asa nu mai intelegi nimic
- }
- int valid(int i)
- {
- //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
- if(x[i]>x[i-1]) return 0; // cand se apeleaza valid(1) x[1] se compara cu x[0] asta inseamna ca
- // trebuie completat vectorul de pe pozitia 0 asa ca ne ducem in main()
- 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 :(
- if(x[i]==x[i-1]-1 && x[i]==x[i-2]-2) return 0;
- }
- return 1;
- }
- void back(int i)
- { int j;
- for(j=1;j<=9;j++) { // nu conteaza cum pleaca j .. important e sa ia valori intre 1 si 9 inclusiv
- x[i]=j;
- if(valid(i)==1) {
- 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
- else back(i+1);}
- }
- }
- int main()
- { cout<<"n=";cin>>n;
- for (int i = 1; i < 10; ++i) { // pt fiecare numar de la 1 la 9 pe pozitia de start executam
- x[0] = i;
- if (n == 1) afisare();
- else back(1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement