Advertisement
Dr4noel

Olesea

May 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. int n = 5;
  5. int sol[20];
  6.  
  7. void BackTracking(int k);
  8. bool valid(int k);
  9. void afis();
  10.  
  11.  
  12. void main() {
  13.     //int k = 1;
  14.  
  15.     BackTracking(1);
  16.  
  17.     _getch();
  18. }
  19.  
  20. void BackTracking(int k) {
  21.     for (int i = 1; i <= n; i++) {
  22.         sol[k] = i;
  23.         if (valid(k)) {
  24.             if (k == n) {
  25.                 afis();
  26.             }
  27.             else {
  28.                 BackTracking(k + 1);
  29.             }
  30.         }
  31.     }
  32. }
  33.  
  34. bool valid(int k) {
  35.     for (int i = 1; i < k; i++)
  36.         if (sol[i] == sol[k])
  37.             return false;
  38.  
  39.     if (k % 2 == 0 && sol[k] != k)
  40.         return false;
  41.        
  42.     return true;
  43. }
  44.  
  45. void afis() {
  46.     for (int i = 1; i <= n; i++) {
  47.         printf("%d ", sol[i]);
  48.     }
  49.     printf("\n");
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement