Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.97 KB | None | 0 0
  1. import javax.swing.JFrame;
  2. import javax.swing.JComponent;
  3. import java.awt.Graphics;
  4.  
  5. public class Assignment5 {
  6.     private class Square {
  7.         public int x;
  8.         public int y;
  9.         public int length;
  10.     }
  11.    
  12.     private static class MyCanvas extends JComponent {
  13.         public Square[] array;
  14.         public void paintComponent(Graphics g) {
  15.             for (int i = 0; i < array.length; i++) {
  16.                 g.drawRect(array[i].x*10, array[i].y*10, array[i].length * 10, array[i].length*10);
  17.             }
  18.         }
  19.     }
  20.    
  21.     /**
  22.      * @param args
  23.      */
  24.     public static void main(String[] args) {
  25.         Assignment5 ass5 = new Assignment5();
  26.         Square[] squares = ass5.solveSquare(0, 0, 4, 4, true);
  27.        
  28.         JFrame window = new JFrame();
  29.         window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  30.         window.setBounds(30, 30, 300, 300);
  31.         MyCanvas canvas = new MyCanvas();
  32.         canvas.array = squares;
  33.         window.getContentPane().add(canvas);
  34.         window.setVisible(true);
  35.         for (int i = 0; i < squares.length; i++) {
  36.             System.out.println(squares[i].x + ", " + squares[i].y + ", " + squares[i].length);
  37.         }
  38.     }
  39.    
  40.     public Square[] solveSquare(int x, int y, int len, int wid, boolean first) {
  41.         int least = len*wid;
  42.         Square[] rect1, rect2;
  43.         Square[] returnArray = new Square[len*wid];
  44.         int num;
  45.         int min;
  46.        
  47.         if (!first) {
  48.             if (len == wid) {
  49.                 Square square = new Square();
  50.                 square.x = x;
  51.                 square.y = y;
  52.                 square.length = len;
  53.                 returnArray = new Square[1];
  54.                 returnArray[0] = square;
  55.                 return returnArray;
  56.             }
  57.            
  58.             if(len == 1) {
  59.                 returnArray = new Square[wid];
  60.                 for (int i = 0; i < wid; i++) {
  61.                     Square square = this.new Square();
  62.                     square.x = x;
  63.                     square.y = y+i;
  64.                     square.length = 1;
  65.                     returnArray[i] = square;
  66.                 }
  67.                 return returnArray;
  68.             } else if (wid == 1) {
  69.                 returnArray = new Square[len];
  70.                 for (int i = 0; i < len; i++) {
  71.                     Square square = new Square();
  72.                     square.x = x+i;
  73.                     square.y = y;
  74.                     square.length = 1;
  75.                     returnArray[i] = square;
  76.                 }
  77.                 return returnArray;
  78.             }
  79.         }
  80.        
  81.         if (len <= wid) {
  82.             min = len;
  83.         } else {
  84.             min = wid;
  85.         }
  86.        
  87.         for (int i = min; i >= 1; i--) {
  88.             if (i == min && first) {
  89.                 continue;
  90.             }
  91.            
  92.             rect1 = solveSquare(i+x, y, len-i, wid, false);
  93.             rect2 = solveSquare(x, i+y, i, wid-i, false);
  94.             num = rect1.length + rect2.length;
  95.             if (num <= least) {
  96.                 least = num;
  97.                 Square square = new Square();
  98.                 square.x = 0;
  99.                 square.y = 0;
  100.                 square.length = i;
  101.                 Square[] tempArray = new Square[1];
  102.                 tempArray[0] = square;
  103.                 returnArray = mergeArrays(rect1, rect2);
  104.                 returnArray = mergeArrays(returnArray, tempArray);
  105.             }
  106.         }
  107.        
  108.         return returnArray;
  109.     }
  110.    
  111.     private Square[] mergeArrays(Square[] arg1, Square[] arg2)
  112.     {
  113.         Square[] merged = new Square[arg1.length + arg2.length];
  114.         for(int i = 0; i < arg1.length; i++) {
  115.             merged[i] = arg1[i];
  116.         }
  117.        
  118.         for(int i = 0; i < arg2.length; i++) {
  119.             merged[arg1.length + i] = arg2[i];
  120.         }
  121.        
  122.         return merged;
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement