Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define N 8
- int mov[8][2];
- void printArray(int tablero[N][N]);
- int knightsTour(int tablero[N][N], int x, int y, int posiciones);
- int isValid(int tablero[N][N], int x, int y, int i);
- int main(){
- mov[0][0] = -1;
- mov[0][1] = 2;
- mov[1][0] = -2;
- mov[1][1] = 1;
- mov[2][0] = -2;
- mov[2][1] = -1;
- mov[3][0] = -1;
- mov[3][1] = -2;
- mov[4][0] = 1;
- mov[4][1] = -2;
- mov[5][0] = 2;
- mov[5][1] = -1;
- mov[6][0] = 2;
- mov[6][1] = 1;
- mov[7][0] = 1;
- mov[7][1] = 2;
- int tablero[N][N];
- int i,j;
- for(i=0; i<N; i++)
- for(j=0; j<N; j++)
- tablero[i][j] = 0;
- int x=0, y=0;
- tablero[x][y] = 1;
- if(knightsTour(tablero,x,y,1)){
- printArray(tablero);
- }else{
- printf("No existe solucion.\n");
- }
- return 0;
- }
- void printArray(int tablero[N][N]){
- int i,j;
- for(i=0; i<N; i++){
- for(j=0; j<N; j++)
- if(tablero[i][j] >9)
- printf("%d ",tablero[i][j]);
- else
- printf("%d ",tablero[i][j]);
- printf("\n");
- }
- printf("\n");
- }
- int knightsTour(int tablero[N][N], int x, int y, int posiciones){
- if(posiciones == N*N)
- return 1;
- int i;
- for(i=0; i<8; i++){
- if(isValid(tablero,x,y,i)){
- x += mov[i][0];
- y += mov[i][1];
- tablero[x][y] = posiciones+1;
- printArray(tablero);
- if(knightsTour(tablero,x,y,posiciones+1)){
- return 1;
- }else{
- tablero[x][y] = 0;
- x -= mov[i][0];
- y -= mov[i][1];
- }
- }
- }
- return 0;
- }
- int isValid(int tablero[N][N], int x, int y, int i){
- int newx = x + mov[i][0];
- int newy = y + mov[i][1];
- if(newx<8 && newx>=0 && newy<8 && newy>=0 && tablero[newx][newy] == 0)
- return 1;
- return 0;
- }
Add Comment
Please, Sign In to add comment