Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package findingseats;
- //import java.util.Scanner;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.Scanner;
- /**
- *
- * @author JuliaLudmann
- */
- public class FindingSeats {
- /**
- * @param args the command line arguments
- */
- static int k;
- static int r;
- static int c;
- static int ergebnis = 0;
- static int merke;
- static char[][] eingabe;
- static int startX;
- static int startY;
- static Scanner scanner;
- //BufferedReader line;
- public static void main(String[] args) throws IOException {
- //BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
- //Scanner scanner = new Scanner(System.in);
- Scanner scanner = new Scanner(System.in);
- String ersterZeile;
- String folgeZeile;
- erstesEinlesen(scanner);
- do { //damit immer erst die erste zeile eingelesen wird und geprüft werden kann
- //ersterZeile = reader.readLine();
- merke = k;
- eingabe = new char [r][c];
- if (r != 0 && k != 0 && c != 0) // bei null endet das ganze
- {
- for (int i = 0; i < r; i++) //ließt die folgenden zeilen für das array ein
- {
- folgeZeile = scanner.next();//reader.readLine();
- for (int j = 0; j < c; j++) //geht die einzelnen Plätze der zeile durch und trägt sie ins array ein
- {
- eingabe[i][j] = folgeZeile.charAt(j);
- }
- }
- while (ergebnis == 0) {
- viereckBilden(merke);
- merke=merke+1;
- //viereckBilden(merke+1);
- }
- }
- r = scanner.nextInt();//ersterZeile.charAt(0);
- c = scanner.nextInt();//ersterZeile.charAt(1);
- k = scanner.nextInt();//ersterZeile.charAt(2);
- } while (r != 0 && k != 0 && c != 0);
- }
- public static void erstesEinlesen(Scanner scanner)
- {
- r = scanner.nextInt();//ersterZeile.charAt(0);
- c = scanner.nextInt();//ersterZeile.charAt(1);
- k = scanner.nextInt();//ersterZeile.charAt(2);
- }
- public static void viereckBilden(int merke)
- {
- if(merke<r*c&&ergebnis==0) //zweiter test ob ergebnis 0 ist unnötig? oder nicht?
- {
- teilerBerechnen(merke);
- //viereckBilden(merke+1);
- }
- else if(ergebnis==0&&merke>=r*c) // evtl einbauen: else if(ergebnis==0&&merke>=r*c)
- {
- ergebnis=r*c;
- System.out.println(ergebnis);
- } //wenn obere eingebaut dann evtl auch noch else für wenn es ein ergebnis gibt
- }
- public static void teilerBerechnen(int zahl)
- {
- for(int i=1;i<zahl+1; i++)
- {
- if(zahl%i==0)
- {
- int laengeB = zahl/i;
- if(angabenTesten(i,laengeB))
- {
- bereichWaehlen(0,0,i,laengeB);
- startX=0;
- startY=0;
- }
- }
- }
- }
- public static boolean angabenTesten(int laengeA, int laengeB)
- {
- return r>=laengeA&&c>=laengeB;
- }
- public static void bereichWaehlen(int startX, int startY, int laengeA, int laengeB)
- {
- if(startX<=r-laengeA&&startY<=c-laengeB&&ergebnis==0) // stoppt wenn der Bereich übers array hinaus geht
- {
- bereichTesten(startX,startY,laengeA,laengeB);
- startX=startX+1;
- bereichWaehlen(startX,startY,laengeA,laengeB);
- startY=startY+1;
- startX=0;
- bereichWaehlen(startX,startY,laengeA,laengeB);
- }
- }
- public static void bereichTesten(int startX, int startY, int laengeA, int laengeB)
- {
- int zaehler=0;
- for(int i=startX; i<startX+laengeA; i++)
- {
- for(int j=startY; j<startY+laengeB; j++) //startY+laengeB weil laengeB die anzahloder zeilen angibt bzw biswhoin startY laufen soll
- {
- if(eingabe[i][j]=='.')
- {
- zaehler=zaehler+1;
- }
- }
- }
- if(zaehler==k)
- {
- ergebnis = merke;
- System.out.println(ergebnis);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement