Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- using namespace std;
- const int N = 30;
- bool comprobar(int matriz[][N], const int n){
- bool encontrado = true;
- for(int i = 0; i<n; i++){
- for(int j = 0; j<n; j++){
- if(matriz[i][j]<=0){
- encontrado = false;
- }
- }
- }
- return encontrado;
- }
- void mostrarTabla(int matriz[][N], const int n){
- for(int i = 0; i<n; i++){
- for(int j = 0; j<n; j++){
- cout << setw(4) << matriz[i][j];
- }
- cout << endl;
- cout << endl;
- }
- cout << endl;
- cout << "---------------------------------------" << endl;
- cout << endl;
- }
- bool comprPos(const int matriz[][N], const int fila, const int columna, const int n){
- return (fila<n)&&(fila>=0)&&(columna<n)&&(columna>=0)&&(matriz[fila][columna]==0);
- }
- void caballo(int matriz[][N], bool& encontrado, int fila, int columna, int i, const int n){
- matriz[fila][columna] = i;
- //mostrarTabla(matriz, n);
- encontrado = comprobar(matriz,n);
- if(!encontrado){
- if(comprPos(matriz, fila-1,columna+2,n)){//1
- caballo(matriz, encontrado, fila-1, columna+2, i+1, n);
- }
- if(comprPos(matriz, fila-2, columna+1, n) && !encontrado){//2
- caballo(matriz, encontrado, fila-2, columna+1, i+1, n);
- }
- if(comprPos(matriz, fila-2, columna-1, n) && !encontrado){//3
- caballo(matriz, encontrado, fila-2, columna-1, i+1, n);
- }
- if(comprPos(matriz, fila-1, columna-2, n) && !encontrado){//4
- caballo(matriz, encontrado, fila-1, columna-2, i+1, n);
- }
- if(comprPos(matriz, fila+1, columna-2, n) && !encontrado){//5
- caballo(matriz, encontrado, fila+1, columna-2, i+1, n);
- }
- if(comprPos(matriz, fila+2, columna-1, n) && !encontrado){//6
- caballo(matriz, encontrado, fila+2, columna-1, i+1, n);
- }
- if(comprPos(matriz, fila+2, columna+1, n) && !encontrado){//7
- caballo(matriz, encontrado, fila+2, columna+1, i+1, n);
- }
- if(comprPos(matriz, fila+1, columna+2, n) && !encontrado){//8
- caballo(matriz, encontrado, fila+1, columna+2, i+1, n);
- }
- }
- if(!encontrado){
- matriz[fila][columna]=0;
- }
- }
- int main(){
- int n;
- cout << "Introduce el numero de filas y columnas: " << flush;
- cin >> n;
- cout << endl << endl;
- int matriz[N][N] = {{0}};
- bool encontrado = false;
- caballo(matriz, encontrado, 0, 0, 1, n);
- if(encontrado){
- mostrarTabla(matriz,n);
- }
- else{
- cout << "Me he perdido ajjaj" << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement