fork download
  1. /*
  2. Rearanjari:
  3. Sa consideram ca n persoane n <= 10 asezate pe un rand
  4. de n scaune doresc sa-si schimbe locurile, astfel incat
  5. nicio persoana sa nu mai stea pe scaunul pe care era
  6. asezata initial. Scrieti un program care sa genereze toate
  7. rearanjarile posibile.
  8. */
  9.  
  10. #include <iostream>
  11.  
  12. using namespace std;
  13.  
  14. int n, sol[100], used[100];
  15.  
  16. void display() {
  17. for(int i = 1; i <= n; ++i) printf("%d ", sol[i]);
  18. printf("\n");
  19. }
  20.  
  21.  
  22. void bkt(int k) {
  23. if(k > n) display();
  24.  
  25. for(int i = 1; i <= n; i++)
  26. if(!used[i] && i!=k) {
  27. used[i] = 1; sol[k] = i; bkt(k+1);used[i] =0;
  28. }
  29.  
  30. }
  31.  
  32. int main(int argc, char const *argv[]) {
  33. n = 4;
  34. bkt(1);
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
2 1 4 3 
2 3 4 1 
2 4 1 3 
3 1 4 2 
3 4 1 2 
3 4 2 1 
4 1 2 3 
4 3 1 2 
4 3 2 1