SHARE
TWEET

Untitled

a guest May 27th, 2019 82 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int n;
  6. int matrice[105][105], xi = 0, yi = 0;
  7. int sols = 0;
  8.  
  9. const int directii = 8;
  10. const int di[directii] = {-2, -1, 1, 2, 2, 1, -1, -2};
  11. const int dj[directii] = {1, 2, 2, 1, -1, -2, -2, -1};
  12.  
  13. void Citire() {
  14.     cout << "Dati n: ";
  15.     cin >> n;
  16.     cout << "Dati coordonatele de inceput x si y: ";
  17.     cin >> xi >> yi;
  18.     matrice[xi][yi] = 1;
  19. }
  20.  
  21. bool isFull() {
  22.     for (int i = 0; i < n; i++)
  23.         for (int j = 0; j < n; j++)
  24.             if (matrice[i][j] == 0)
  25.                 return false;
  26.     return true;
  27. }
  28.  
  29. void Solutie() {
  30.     sols++;
  31.  
  32.     cout << "Solutia nr. " << sols << ": \n";
  33.     for (int i = 0; i < n; i++) {
  34.         for (int j = 0; j < n; j++)
  35.             cout << setw(4) << matrice[i][j];
  36.         cout << "\n";
  37.     }
  38.  
  39.     cout << "\n\n";
  40. }
  41.  
  42. bool isOK(int i, int j) {
  43.     if (i > n - 1 || i < 0)
  44.         return false;
  45.     if (j > n - 1 || j < 0)
  46.         return false;
  47.     if (matrice[i][j])
  48.         return false;
  49.  
  50.     return true;
  51. }
  52.  
  53. void Rezolvare(int x, int y, int nivel) {
  54.     static int r = 2;
  55.     int unk = 0;
  56.     for (int i = 0; i < directii; i++) {
  57.         int i_vecin = x + di[i];
  58.         int j_vecin = y + dj[i];
  59.         if (isOK(i_vecin, j_vecin)) {
  60.             matrice[i_vecin][j_vecin] = nivel;
  61.             Rezolvare(i_vecin, j_vecin, nivel+1);
  62.             matrice[i_vecin][j_vecin] = 0;
  63.             r--;
  64.             unk = 1;
  65.         }
  66.     }
  67.     if (!unk) {
  68.         Solutie();
  69.         return;
  70.     }
  71. }
  72.  
  73. int main() {
  74.     Citire();
  75.     matrice[xi][yi] = 1;
  76.     Rezolvare(xi, yi, 2);
  77.     if (sols == 0) {
  78.         cout << "Nu exista nici un drum care sa parcurga toate spatiile de pe "
  79.                         "tabla\n";
  80.     } else {
  81.         cout << "In total sunt " << sols
  82.                  << " drumuri  prin care se parcurg toate spatiile de pe tabla\n";
  83.     }
  84.     return 0;
  85. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top