Flood fill Algorithm Java
PROGRAM TO IMPLEMENT FLOOD FILL ALGORITHM
OUTPUT
Updated screen after call to floodFill: 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
class MAIN{// Dimentions of paint screenstatic int M = 8;static int N = 8;// A recursive function to replace previous color 'prevC' at '(x, y)' // and all surrounding pixels of (x, y) with new color 'newC' andstatic void floodFillUtil(int screen[][], int x, int y, int prevC, int newC){ // Base cases if (x < 0 || x >= M || y < 0 || y >= N) return; if (screen[x][y] != prevC) return; // Replace the color at (x, y) screen[x][y] = newC; // Recur for north, east, south and west floodFillUtil(screen, x+1, y, prevC, newC); floodFillUtil(screen, x-1, y, prevC, newC); floodFillUtil(screen, x, y+1, prevC, newC); floodFillUtil(screen, x, y-1, prevC, newC);}// It mainly finds the previous color on (x, y) and// calls floodFillUtil()static void floodFill(int screen[][], int x, int y, int newC){ int prevC = screen[x][y]; floodFillUtil(screen, x, y, prevC, newC);}// Driver codepublic static void main(String[] args) { int screen[][] = {{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, 2, 2, 2, 2, 0, 1, 0}, {1, 1, 1, 2, 2, 0, 1, 0}, {1, 1, 1, 2, 2, 2, 2, 0}, {1, 1, 1, 1, 1, 2, 1, 1}, {1, 1, 1, 1, 1, 2, 2, 1}, }; int x = 4, y = 4, newC = 3; floodFill(screen, x, y, newC); System.out.println("Updated screen after call to floodFill: "); for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) System.out.print(screen[i][j] + " "); System.out.println(); } }}
Updated screen after call to floodFill: 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
Comments
Post a Comment