package exercises;
public class Floodfill {
private int[][] matrix;
private int size;
private int row;
private int column;
public Floodfill(int size) {
this.size = size;
this.matrix = new int[size][size];
}
public Floodfill row(int row) {
this.row = row;
return this;
}
public Floodfill column(int column) {
this.column = column;
return this;
}
public void add(int item) {
this.matrix[this.row - 1][this.column - 1] = item;
}
public void fill(int row, int column, int current, int _new) {
if(row > size || column > size || row < 0 || column < 0) return;
System.out.println("Row:" + row + ", Column:" + column);
if(matrix[row - 1][column - 1] != current) return;
//System.out.println("Row : " + row + ", Column : " + column);
matrix[row - 1][column - 1] = _new;
fill(row + 1, column, current, _new);
fill(row - 1, column, current, _new);
fill(row, column + 1, current, _new);
fill(row, column - 1, current, _new);
}
public void printAll() {
for(int i = 0; i < size; i++) {
for(int j = 0; j < size; j++) {
System.out.print(String.format("%d ", matrix[i][j]));
}
System.out.print("\n");
}
System.out.println("***************");
}
}
/**
* screen[M][N] = {{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 0, 0},
{1, 0, 0, 1, 1, 0, 1, 1},
{1, 3, 3, 3, 3, 0, 1, 0},
{1, 1, 1, 3, 3, 0, 1, 0},
{1, 1, 1, 3, 3, 3, 3, 0},
{1, 1, 1, 1, 1, 3, 1, 1},
{1, 1, 1, 1, 1, 3, 3, 1},
};
*/
public static void demoFloodfill() {
Floodfill matrix = new Floodfill(8);
matrix.row(1).column(1).add(1); matrix.column(2).add(1); matrix.column(3).add(1); matrix.column(4).add(1);
matrix.column(5).add(1); matrix.column(6).add(1); matrix.column(7).add(1); matrix.column(8).add(1);
matrix.row(2).column(1).add(1);matrix.column(2).add(1); matrix.column(3).add(1); matrix.column(4).add(1);
matrix.column(5).add(1); matrix.column(6).add(1); matrix.column(7).add(0); matrix.column(8).add(0);
matrix.row(3).column(1).add(1); matrix.column(2).add(0); matrix.column(3).add(0); matrix.column(4).add(1);
matrix.column(5).add(1); matrix.column(6).add(0); matrix.column(7).add(1); matrix.column(8).add(1);
matrix.row(4).column(1).add(1); matrix.column(2).add(3); matrix.column(3).add(3); matrix.column(4).add(3);
matrix.column(5).add(3); matrix.column(6).add(0); matrix.column(7).add(1); matrix.column(8).add(0);
matrix.row(5).column(1).add(1);matrix.column(2).add(1); matrix.column(3).add(1); matrix.column(4).add(3);
matrix.column(5).add(3); matrix.column(6).add(0); matrix.column(7).add(1); matrix.column(8).add(0);
matrix.row(6).column(1).add(1);matrix.column(2).add(1); matrix.column(3).add(1); matrix.column(4).add(3);
matrix.column(5).add(3); matrix.column(6).add(3); matrix.column(7).add(3); matrix.column(8).add(0);
matrix.row(7).column(1).add(1);matrix.column(2).add(1); matrix.column(3).add(1); matrix.column(4).add(1);
matrix.column(5).add(1); matrix.column(6).add(3); matrix.column(7).add(1); matrix.column(8).add(1);
matrix.row(8).column(1).add(1);matrix.column(2).add(1); matrix.column(3).add(1); matrix.column(4).add(1);
matrix.column(5).add(1); matrix.column(6).add(3); matrix.column(7).add(3); matrix.column(8).add(1);
matrix.printAll();
matrix.fill(4, 2, 3, 2);
matrix.printAll();
}
No comments:
Post a Comment