class Sachy { public static void main(String[] args) { Sachovnice mat = new Sachovnice(); mat.runit(); } } class Pole { private int sloupec, radek; Pole prvni; Pole druhe; Pole treti; Pole ctvrte; Pole pate; Pole seste; Pole sedme; Pole osme; public Pole(int sloupec, int radek) { this.sloupec = sloupec; this.radek = radek; } } class Sachovnice { private Pole koren; private int[] result = new int[9]; Sachovnice() { koren = new Pole(0,0); } public void runit() { init(koren, 0,0); } private void init(Pole p,int col, int row) { p = new Pole(col,row); if (false == otestuj(col,row)) return; result[row] = col; if (row == 8) { napisReseni(); return; } int next = row +1; init(p.prvni, 1, next); init(p.druhe, 2, next); init(p.treti, 3, next); init(p.ctvrte, 4, next); init(p.pate, 5, next); init(p.seste, 6, next); init(p.sedme, 7, next); init(p.osme, 8, next); } private boolean otestuj(int col, int row) { if (row == 1) return true; int plus = 1; int tmp = 0; for (int i = row - 1; i > 0; i--) { if (col == result[i]) return false; tmp = col + plus; if (tmp == result[i]) return false; tmp = col - plus; if (tmp == result[i]) return false; plus++; } return true; } private void napisReseni() { for (int i = 1; i < 9; i++) { System.out.print(result[i]+" "); } System.out.println(); } }