2945 (eight queens)

8 damen sollen so platziert werden, dass sie sich gegenseitig nicht angreifen. das folgende javaprogramm löst dieses kleine, lustige problem.

public class Schachspiel {
 
	public static void main(String[] args) {
		int n = 8;
		int[] a = new int[n];
		setzeDame(a, 0);
	}
 
	static void setzeDame(int[] a, int n) {
 
		if (n == a.length) {
			int z = 1;	
			for (int x : a)
				System.out.print(x + 1 + " ");
			System.out.println();
		} 
 
		else {
			for (int i = 0; i < a.length; i++) {
				if (n == 0) { 
					a[0] = n;
					setzeDame(a, n + 1);
				}
				int x = 0;
				for (int j = 0; j < n; j++) {			// durchlauft alle Zeilen 
																// kleiner als aktuelle Zeile
					if (a[j] != i)								// alle zeilen vorher muessen andere Werte haben
						if (a[j] != i + (n - j))				// diagonale pruefen, rechts
							if (a[j] != i - (n - j))			// diagonale pruefen, links
								x++;							// wenn alles zutrifft, erhoehe x
				}
				if (x == n) {								// wenn x fuer alle zeilen erhoeht wurde, setze
					a[n] = i;									// Dame und mach weiter in nächster Zeile
					setzeDame(a, n + 1);
					
					/*
					 * sollte dieser rekursive Aufruf nicht zum Ergebniss führen,
					 * wird die schleife (mit j) weitergeführt ...
					 */
				}
			}
		}
	}
}

Leave a comment