Buenas a todos, soy nuevo, tengo que poner piezas de ajedrez en un tablero de nxn y colocarlas de manera que no se maten, y algunos casos me funcionan y otros no, alguien que domine el backtracking me podria ayudar?
private void colocarPiezas(int fInicial, int cInicial, int nColocadas) {
boolean solIncompleta = true;
encertado = false;
int[][] posicionesPosibles;
if (primeraVez) {
posicionesPosibles = new int[1][2];
posicionesPosibles[0][0] = fInicial;
posicionesPosibles[0][1] = cInicial;
primeraVez = false;
} else {
// Busca las posiciones que no estan amenazadas
posicionsPossibles = cercarPossibles();
}
int indice = 0;
while (solIncompleta && indice < posicionesPosibles.length) {
int f = posicionesPosibles[indice][0];
int c = posicionesPosibles[indice][1];
coordPiezas[nPiezasColocadas][0] = f;
coordPiezas[nPiezasColocadas][1] = c;
piezasPorColocar[nPiezasColocadas].setI(f);
piezasPorColocar[nPiezasColocadas].setJ(c);
nPiezasColocadas++;
solIncompleta = nPiezasColocadas < nPiezasElegidas;
if (solIncompleta) {
colocarPiezas(fInicial, cInicial, nColocadas + 1);
if (!encertado) {
nPiezasColocadas--;
}
}
indice++;
solIncompleta = nPiezasColocadas < nPiezasElegidas;
}
if (!solIncompleta) {
encertado = true;
} else {
encertado = false;
}
}
Muchas gracias a todos por la ayuda, saludos.