Advertisement
Dani_info

problema sariturii calului

Dec 9th, 2019
118
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. const int x[8]={-1, 1, 2, 2, 1, -1, -2, -2};
  7. const int y[8]={2, 2, 1, -1, -2, -2, -1, 1};
  8. int n, sol[100][2], esteZero[25][25];
  9.  
  10. int solutie (int k){
  11.     if (k==n*n)
  12.         return 1;
  13.     else
  14.         return 0;
  15. }
  16.  
  17. void tipar(int k){
  18.     for (int i=1; i<=k-1; i++)
  19.         cout<<sol[i][0]<<" "<<sol[i][1]<<endl;
  20. }
  21.  
  22. int valid (int k, int linie, int coloana){
  23.     if (linie<=n && linie>=1 && coloana<=n && coloana>=1 && esteZero[linie][coloana]==0)
  24.         return 1;
  25.     else
  26.         return 0;
  27. }
  28.  
  29. void init (int k, int linie, int coloana){
  30.     sol[k][0]=linie;
  31.     sol[k][1]=coloana;
  32. }
  33.  
  34. void back(int k, int lin, int col){
  35.      int linie,coloana,i;
  36.      if (solutie(k)){
  37.         tipar(k);
  38.         exit (EXIT_SUCCESS);
  39.      }
  40.      else{
  41.         init (k, lin, col);
  42.         for (i=0; i<=7; i++){
  43.             linie=lin+x[i];
  44.             coloana=col+y[i];
  45.             if (valid (k, linie, coloana)){
  46.                 esteZero[linie][coloana]=1;
  47.                 back(k+1,linie,coloana);
  48.                 esteZero[linie][coloana]=0;
  49.             }
  50.          }
  51.      }
  52. }
  53. int main(){
  54.     cout<<"n=";
  55.     cin>>n;
  56.     back(1,1,1);
  57.     return 0;
  58. }
Advertisement
RAW Paste Data Copied
Advertisement