Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class NRegineNew extends ProblemaBackNew {
- private boolean[][] sol;
- private int regine[];
- private int n;
- public NRegineNew(int n) {
- this.n = n;
- sol = new boolean[n][n];
- regine = new int[n];
- }
- @Override
- protected boolean successivaScelta(int l) {
- sol[l][regine[l]] = false;
- if (regine[l] < sol.length - 1) {
- regine[l] += 1;
- sol[l][regine[l]] = true;
- return true;
- }
- return false;
- }
- @Override
- protected boolean solCompleta(int l) {
- return l == n - 1;
- }
- @Override
- protected boolean verificaVincoli(int l) {
- for (int i = 0; i < l; i++) {
- if (regine[i] == regine[l])
- return false; // stessa colonna
- if ((regine[i] - regine[l]) == (l - i))
- return false; // stessa diagonale principale
- if ((regine[l] - regine[i]) == (l - i))
- return false; // stessa diagonale secondaria
- }
- return true;
- }
- @Override
- protected boolean primaScelta(int l) {
- sol[l][0] = true;
- regine[l] = 0;
- return true;
- }
- public boolean[][] getSoluzione() {
- return sol;
- }
- public static void main(String[] args) {
- int n = 15;
- NRegineNew regine = new NRegineNew(n);
- boolean risolto = regine.risolvi(0);
- System.out.println("Problema risolto? " + risolto);
- boolean[][] sol = regine.getSoluzione();
- for (int i = 0; i < sol.length; i++) {
- for (int j = 0; j < sol.length; j++) {
- char p = sol[i][j] ? 'X' : 'O';
- System.out.print(p + " ");
- }
- System.out.println();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement