Zum Inhalt
Näherungsverfahren 1 SS10
Aus ProgrammingWiki
<
AuK
Archivierte Version vom 2010-06-02T15:37:54+00:00.
Aktuelle Version
import java.io.*; import java.util.*; public class WarnsdorfalgorithmusArray { private static final String FileInputName = "springerin.txt"; private static final String FileOutputName = "springerout.txt"; private static final int nx[] = { -2, -2, -1, -1, 1, 1, 2, 2 }; private static final int ny[] = { -1, 1, -2, 2, -2, 2, -1, 1 }; private static boolean imSchachbrett(int x, int y, int m, int n) { return ((0 <= x && x < m) && (0 <= y && y < n)); } private static int möglicheSchritte(int a[][], int m, int n, int x, int y) { int anzahl = 0; int xn, yn; for (int i = 0; i < 8; i++) { xn = x + nx[i]; yn = y + ny[i]; if (imSchachbrett(xn, yn, m, n) && a[xn][yn] == 0) anzahl++; } return anzahl; } static boolean findeBestenWeg(int a[][], int m, int n, int xy[]) { int aux = Integer.MAX_VALUE; int xn, yn, xx = 0, yy = 0; for (int i = 0; i < 8; i++) { xn = xy[0] + nx[i]; yn = xy[1] + ny[i]; if (imSchachbrett(xn, yn, m, n) && a[xn][yn] == 0) { int schritte = möglicheSchritte(a, m, n, xn, yn); if (schritte < aux) { aux = schritte; xx = xn; yy = yn; } } } if (aux < Integer.MAX_VALUE) { xy[0] = xx; xy[1] = yy; return true; } return false; } public static void main(String[] args) { Scanner scanner = null; //PrintStream out = null; BufferedReader eingabe = new BufferedReader( new InputStreamReader(System.in)); String temp=""; try { scanner = new Scanner(new File(FileInputName)); //out = new PrintStream(new File(FileOutputName)); //eingabe(args); int m = 0; //scanner.nextInt(); int n = 0; //scanner.nextInt(); int l = 0; //scanner.nextInt(); int c = 0; //scanner.nextInt(); System.out.println("Geben Sie 'n' eines n*m Schachbretts an : "); try { temp = eingabe.readLine(); n = Integer.parseInt(temp); } catch(IOException e){ System.out.println("Fehler"); } System.out.println("Geben Sie 'm' eines n*m Schachbretts an : "); try { temp = eingabe.readLine(); m = Integer.parseInt(temp); } catch(IOException e){ System.out.println("Fehler"); } System.out.println("Geben Sie die x-Koordinate des Springers an: "); try { temp = eingabe.readLine(); l = Integer.parseInt(temp); } catch(IOException e){ System.out.println("Fehler"); } System.out.println("Geben Sie die y-Koordinate des Springers an: "); try { temp = eingabe.readLine(); c = Integer.parseInt(temp); } catch(IOException e){ System.out.println("Fehler"); } l--; c--; int[][] a = new int[m][n]; a[l][c] = 1; int ctr = 1; int xy[] = new int[2]; xy[0] = 1; xy[1] = c; while (findeBestenWeg(a, m, n, xy)) { a[xy[0]][xy[1]] = ++ctr; } /*if (ctr == m * n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { out.printf("%4d", a[i][j]); } out.println(); } } else { out.println("Keine Lösung!"); } */ if (ctr == m * n) { for (int i = 0; i < n; i++) { System.out.println(); System.out.println(); for (int j = 0; j < n; j++) { System.out.print("\t"+a[i][j] + "\t"); } } }else System.out.println("keine Lösung !!"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (scanner != null) { scanner.close(); // if (out != null) { // out.close(); } } } }
<eval></eval>
Seite
Quelltext
Versionen/Autoren
Konto registrieren
Anmelden
Navigation
Startseite
Letzte Änderungen
Alle Seiten
Einführungskurs
Hilfe
Dateien
Suche
Suchen
Werkzeuge
Links auf diese Seite
Spezialseiten