Advertisement
Guest User

Untitled

a guest
May 30th, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.66 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package findingseats;
  7.  
  8. //import java.util.Scanner;
  9. import java.io.BufferedReader;
  10. import java.io.FileReader;
  11. import java.io.IOException;
  12. import java.util.Scanner;
  13.  
  14. /**
  15.  *
  16.  * @author JuliaLudmann
  17.  */
  18. public class FindingSeats {
  19.  
  20.     /**
  21.      * @param args the command line arguments
  22.      */
  23.     static int k;
  24.     static int r;
  25.     static int c;
  26.     static int ergebnis = 0;
  27.     static int merke;
  28.     static char[][] eingabe;
  29.     static int startX;
  30.     static int startY;
  31.     static Scanner scanner;
  32.     //BufferedReader line;
  33.      
  34.  
  35.     public static void main(String[] args) throws IOException {
  36.         //BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
  37.         //Scanner scanner = new Scanner(System.in);
  38.         Scanner scanner = new Scanner(System.in);
  39.         String ersterZeile;
  40.         String folgeZeile;
  41.         erstesEinlesen(scanner);
  42.         do { //damit immer erst die erste zeile eingelesen wird und geprüft werden kann
  43.             //ersterZeile = reader.readLine();
  44.             merke = k;
  45.             eingabe = new char [r][c];
  46.             if (r != 0 && k != 0 && c != 0) // bei null endet das ganze
  47.             {
  48.                 for (int i = 0; i < r; i++) //ließt die folgenden zeilen für das array ein
  49.                 {
  50.                     folgeZeile = scanner.next();//reader.readLine();
  51.                     for (int j = 0; j < c; j++) //geht die einzelnen Plätze der zeile durch und trägt sie ins array ein
  52.                     {
  53.                         eingabe[i][j] = folgeZeile.charAt(j);
  54.                     }
  55.                 }
  56.                 while (ergebnis == 0) {
  57.                     viereckBilden(merke);
  58.                     merke=merke+1;
  59.                     //viereckBilden(merke+1);
  60.                 }
  61.             }
  62.             r = scanner.nextInt();//ersterZeile.charAt(0);
  63.             c = scanner.nextInt();//ersterZeile.charAt(1);
  64.             k = scanner.nextInt();//ersterZeile.charAt(2);
  65.         } while (r != 0 && k != 0 && c != 0);  
  66. }
  67.  
  68. public static void erstesEinlesen(Scanner scanner)
  69. {
  70.     r = scanner.nextInt();//ersterZeile.charAt(0);
  71.     c = scanner.nextInt();//ersterZeile.charAt(1);
  72.     k = scanner.nextInt();//ersterZeile.charAt(2);
  73. }
  74.    
  75. public static void viereckBilden(int merke)
  76.     {
  77.         if(merke<r*c&&ergebnis==0)                  //zweiter test ob ergebnis 0 ist unnötig? oder nicht?
  78.         {
  79.             teilerBerechnen(merke);
  80.             //viereckBilden(merke+1);
  81.         }
  82.         else if(ergebnis==0&&merke>=r*c)                                       // evtl einbauen: else if(ergebnis==0&&merke>=r*c)
  83.         {
  84.             ergebnis=r*c;
  85.             System.out.println(ergebnis);
  86.         }                                            //wenn obere eingebaut dann evtl auch noch else für wenn es ein ergebnis gibt
  87.     }
  88.    
  89.     public static void teilerBerechnen(int zahl)
  90.     {
  91.         for(int i=1;i<zahl+1; i++)
  92.         {
  93.             if(zahl%i==0)
  94.             {
  95.                 int laengeB = zahl/i;
  96.                 if(angabenTesten(i,laengeB))
  97.                 {
  98.                     bereichWaehlen(0,0,i,laengeB);
  99.                     startX=0;
  100.                     startY=0;
  101.                 }
  102.             }
  103.         }
  104.     }
  105.    
  106.     public static boolean angabenTesten(int laengeA, int laengeB)
  107.     {
  108.         return r>=laengeA&&c>=laengeB;
  109.     }
  110.    
  111.     public static void bereichWaehlen(int startX, int startY, int laengeA, int laengeB)
  112.     {
  113.         if(startX<=r-laengeA&&startY<=c-laengeB&&ergebnis==0) // stoppt wenn der Bereich übers array hinaus geht
  114.         {
  115.             bereichTesten(startX,startY,laengeA,laengeB);
  116.             startX=startX+1;
  117.             bereichWaehlen(startX,startY,laengeA,laengeB);
  118.             startY=startY+1;
  119.             startX=0;
  120.             bereichWaehlen(startX,startY,laengeA,laengeB);
  121.         }
  122.     }
  123.    
  124.     public static void bereichTesten(int startX, int startY, int laengeA, int laengeB)
  125.     {
  126.         int zaehler=0;
  127.         for(int i=startX; i<startX+laengeA; i++)
  128.         {
  129.             for(int j=startY; j<startY+laengeB; j++)        //startY+laengeB weil laengeB die anzahloder zeilen angibt bzw biswhoin startY laufen soll
  130.             {
  131.                 if(eingabe[i][j]=='.')
  132.                 {
  133.                     zaehler=zaehler+1;
  134.                 }
  135.             }
  136.         }
  137.         if(zaehler==k)
  138.         {
  139.             ergebnis = merke;
  140.             System.out.println(ergebnis);
  141.         }
  142.     }  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement