Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*** p2
- *Fiind data o tabla de sah de dimensiunea nxn si un cal in coltul stanga sus al acesteia,
- se cere sa se afiseze toate posibilitatile de mutare a acestei piese de sah astfel incat
- sa treaca o singura data prin fiecare patrat al tablei.
- O solutie va fi afisata ca o matrice nxn in care sunt numerotate sariturile calului.
- *Exemplu, pentru n=5, o solutie este
- *1 14 9 20 23
- *10 19 22 15 8
- *5 2 13 24 21
- *18 11 4 7 16
- *3 6 17 12 25
- ***/
- /***
- *calul este asezat random
- *
- ***/
- #include<fstream>
- #include<iostream>
- #include <stdlib.h>
- #include<time.h>
- using namespace std;
- const int dy[8]= {-2,-2,-1,1,2,2,1,-1};
- const int dx[8]= {-1,1,2,2,1,-1,-2,-2};
- int a[10][10],n;
- ofstream f("cal.out");
- void afis() {
- int i,j;
- for(i=1; i<=n; i++) {
- for(j=1; j<=n; j++)
- f<<a[i][j]<<" ";
- f<<endl;
- }
- f<<endl;
- }
- int inside(int i,int j) {
- return i>=1 && i<=n && j>=1 && j<=n;
- }
- void back(int i, int j, int pas) {
- int k,inou,jnou;
- a[i][j]=pas;
- if (pas==n*n)
- afis();
- else
- for(k=0; k<8; k++) {
- inou=i+dx[k];
- jnou=j+dy[k];
- if (inside(inou,jnou) && a[inou][jnou]==0)
- back(inou,jnou,pas+1);
- }
- a[i][j]=0;
- }
- int main() {
- cout<<"dati n: ";
- cin>>n;
- for(int i=1; i<=n; i++) {
- for(int j=1; j<=n; j++) {
- a[i][j]=0;
- }
- }
- srand(time(NULL));
- int i=1+rand()%n;
- int j=1+rand()%n;
- back(i,j,1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement