Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
ffprog:ffprogjava2016:soiaufgben [2016/09/30 10:19] Ivo Blöchliger [CableCar] |
ffprog:ffprogjava2016:soiaufgben [2016/10/11 12:33] Ivo Blöchliger [Tunnel] |
||
---|---|---|---|
Line 39: | Line 39: | ||
**Achtung: | **Achtung: | ||
* {{ : | * {{ : | ||
+ | |||
+ | <hidden Lösungsvorschlag in Java> | ||
+ | <code java> | ||
+ | public static void aufgabe3() throws IOException { | ||
+ | Path datei = Paths.get(" | ||
+ | // Speicher für die Ausgabe | ||
+ | ArrayList< | ||
+ | try (Scanner scanner = new Scanner(Files.newInputStream(datei))) { | ||
+ | int anzahlFaelle = scanner.nextInt(); | ||
+ | for (int fall=0; fall< | ||
+ | int maximum = 2; | ||
+ | int m = scanner.nextInt(); | ||
+ | System.out.println(m); | ||
+ | int erster = scanner.nextInt(); | ||
+ | int letzter = scanner.nextInt(); | ||
+ | int d = letzter-erster; | ||
+ | int anzahl = 2; | ||
+ | for (int j=2; j<m; j++) { | ||
+ | int aktueller = scanner.nextInt(); | ||
+ | // | ||
+ | if (aktueller-letzter!=d) { // Mit letztem Masten vergleichen | ||
+ | d = aktueller-letzter; | ||
+ | anzahl = 2; | ||
+ | } else { | ||
+ | anzahl++; | ||
+ | if (anzahl > maximum) { | ||
+ | maximum = anzahl; | ||
+ | } | ||
+ | } | ||
+ | letzter = aktueller; | ||
+ | } | ||
+ | lines.add(String.format(" | ||
+ | } | ||
+ | } | ||
+ | // Einzeiler, das eine Liste von Strings in eine Datei schreibt. | ||
+ | Files.write(Paths.get(" | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | </ | ||
=== Teilaufgabe 4 === | === Teilaufgabe 4 === | ||
Line 51: | Line 91: | ||
* $O(n)$ Lösung: http:// | * $O(n)$ Lösung: http:// | ||
+ | |||
+ | === Aufgabe 1 === | ||
+ | * {{ : | ||
+ | |||
+ | === Aufgabe 2 === | ||
+ | |||
+ | * {{ : | ||
+ | |||
+ | === Aufgabe 3 === | ||
+ | Anstatt einer Instanz-Datei (ca. 1GB) gibt es hier einen Java-Code, der eine Instanz-Datei generiert: | ||
+ | <code java> | ||
+ | public static void generate(String fileName, int cases, int maxN, int maxH, int seed) throws IOException { | ||
+ | ArrayList< | ||
+ | lines.add(String.format(" | ||
+ | Random r = new Random(seed); | ||
+ | for (int c=0; c<cases; c++) { | ||
+ | int n = r.nextInt(maxN-4)+5; | ||
+ | lines.add(String.format(" | ||
+ | List< | ||
+ | Collections.sort(bounds); | ||
+ | int minH = r.nextInt(maxH/ | ||
+ | System.out.println(" | ||
+ | int heights[][] = new int[2][n]; | ||
+ | for (int i=0; i<n; i++) { | ||
+ | int x = (i> | ||
+ | heights[1][i] = r.nextInt(x); | ||
+ | heights[0][i] = r.nextInt(maxH-x)+x+1; | ||
+ | } | ||
+ | StringBuilder sb = new StringBuilder(); | ||
+ | for (int j=0; j<2; j++) { | ||
+ | for (int i=0; i<n; i++) { | ||
+ | sb.append(heights[j][i]); | ||
+ | if (i<n-1) { | ||
+ | sb.append(" | ||
+ | } | ||
+ | } | ||
+ | lines.add(sb.toString()); | ||
+ | sb = new StringBuilder(); | ||
+ | } | ||
+ | } | ||
+ | Files.write(Paths.get(fileName), | ||
+ | System.out.println(" | ||
+ | } | ||
+ | </ | ||
+ | Aufruf mit | ||
+ | <code java> | ||
+ | generate(" | ||
+ | </ | ||
+ | Für diese Parameter sieht die Lösung wie folgt aus: | ||
+ | <code txt> | ||
+ | |||
+ | </ |