Moin zusammen,
ich hab da mal wieder ein kleines Problem. Ich möchte ein boolsches Array diagnonal durchsuchen. Bei meinem Algorhytmus habe ich im Moment noch das Problem das ich über das Array hinaus gehe(beim diagonalen suchen). Irgendwie krieg ich es gedanklich nicht gefasst wie der Algorhytmus aussehen muss. Vielleicht könnt ihr mir helfen.
Dabei soll sich ein Schachbrett vorgestellt werden auf dem eine Dame steht. Nun soll geprüft werden, ob sich im Bewegungsbereich der Dame eine andere Dame befindet.
Horizontal,Vertikal okay nur mit den diagonalen klappt es nicht so.
Danke für die Hilfe.
ich hab da mal wieder ein kleines Problem. Ich möchte ein boolsches Array diagnonal durchsuchen. Bei meinem Algorhytmus habe ich im Moment noch das Problem das ich über das Array hinaus gehe(beim diagonalen suchen). Irgendwie krieg ich es gedanklich nicht gefasst wie der Algorhytmus aussehen muss. Vielleicht könnt ihr mir helfen.
Dabei soll sich ein Schachbrett vorgestellt werden auf dem eine Dame steht. Nun soll geprüft werden, ob sich im Bewegungsbereich der Dame eine andere Dame befindet.
Horizontal,Vertikal okay nur mit den diagonalen klappt es nicht so.
Danke für die Hilfe.
Java:
public static void main(String[] args) {
boolean[][] dame = new boolean[][] { { true, true }, { false, false } };
System.out.println(istLoesung(dame));
}
public static boolean istLoesung(boolean[][] feld) {
for (int i = 0; i < feld.length; i++) {
for (int j = 0; j < feld[i].length; j++) {
// wenn auf dem Feld eine Dame steht dann....
if (feld[i][j]) {
// Koordinate in die prüfe Methode übergeben
if (pruefe(feld, i, j) == false) {
return false;
}
}
}
}
return true;
}
public static boolean pruefe(boolean[][] feld, int x, int y) {
int zaehler = 0;
// Horizontale suche nach Darme
for (int i = 0; i < feld[x].length; i++) {
if (feld[x][i]) {
zaehler++;
}
if (zaehler > 1) {
return false;
}
}
zaehler = 0;
// Vertikale suche
for (int i = 0; i < feld.length; i++) {
if (feld[i][y]) {
zaehler++;
}
if (zaehler > 1) {
return false;
}
}
zaehler = 0;
// diagonal (links-unten)
for (int i = 0; i <= feld.length; i++) {
if (feld[x + i][y - i]) {
zaehler++;
}
if (zaehler > 1) {
return false;
}
}
return true;
}
}