Advertisement
Guest User

Untitled

a guest
May 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.47 KB | None | 0 0
  1. public class NRegineNew extends ProblemaBackNew {
  2.  
  3.     private boolean[][] sol;
  4.     private int regine[];
  5.     private int n;
  6.  
  7.     public NRegineNew(int n) {
  8.         this.n = n;
  9.         sol = new boolean[n][n];
  10.         regine = new int[n];
  11.     }
  12.  
  13.     @Override
  14.     protected boolean successivaScelta(int l) {
  15.         sol[l][regine[l]] = false;
  16.         if (regine[l] < sol.length - 1) {
  17.             regine[l] += 1;
  18.             sol[l][regine[l]] = true;
  19.             return true;
  20.         }
  21.         return false;
  22.     }
  23.  
  24.     @Override
  25.     protected boolean solCompleta(int l) {
  26.         return l == n - 1;
  27.     }
  28.  
  29.     @Override
  30.     protected boolean verificaVincoli(int l) {
  31.         for (int i = 0; i < l; i++) {
  32.             if (regine[i] == regine[l])
  33.                 return false; // stessa colonna
  34.             if ((regine[i] - regine[l]) == (l - i))
  35.                 return false; // stessa diagonale principale
  36.             if ((regine[l] - regine[i]) == (l - i))
  37.                 return false; // stessa diagonale secondaria
  38.         }
  39.         return true;
  40.     }
  41.  
  42.     @Override
  43.     protected boolean primaScelta(int l) {
  44.         sol[l][0] = true;
  45.         regine[l] = 0;
  46.         return true;
  47.     }
  48.  
  49.     public boolean[][] getSoluzione() {
  50.         return sol;
  51.     }
  52.  
  53.     public static void main(String[] args) {
  54.         int n = 15;
  55.         NRegineNew regine = new NRegineNew(n);
  56.         boolean risolto = regine.risolvi(0);
  57.         System.out.println("Problema risolto? " + risolto);
  58.         boolean[][] sol = regine.getSoluzione();
  59.         for (int i = 0; i < sol.length; i++) {
  60.             for (int j = 0; j < sol.length; j++) {
  61.                 char p = sol[i][j] ? 'X' : 'O';
  62.                 System.out.print(p + " ");
  63.             }
  64.             System.out.println();
  65.         }
  66.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement