-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNReinas.java
36 lines (35 loc) · 924 Bytes
/
NReinas.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class NReinas {
public void nReinas(int n, int[]reinas) {
for(int i=0;i<reinas.length;i++) {
if(this.valido(reinas, n, i)==true) {
reinas[n]=i;
if(n==reinas.length-1) {
imprimeTablero(reinas);
}else {
this.nReinas(n+1, reinas);
}
}
}
}
private boolean valido(int [] reinas, int fila, int columna) {
for(int i=0; i<fila; i++) {
if(reinas[i]==columna) {
return false;
}else if(Math.abs(fila-i)==Math.abs(columna-reinas[i])) { //Revisar que no haya otra reina en la diagonal
return false;
}
}
return true; //Es una posición valida
}
public void imprimeTablero(int []reinas) {
for(int i=0;i<reinas.length;i++) {
System.out.print(reinas[i]+", ");
}
System.out.println();
}
public static void main(String[]args) {
NReinas nr= new NReinas();
int []reinas= {-1,-1,-1,-1,-1,-1,-1,-1};
nr.nReinas(0, reinas);
}
}