package com.interview.graph;
/**
* http://en.wikipedia.org/wiki/Flood_fill
*
*/
public class FloodFillAlgorithm {
public void fillDFS(int screen[][], int oldColor, int newColor,int startx,int starty){
fillUtil(screen,startx,starty,oldColor,newColor);
}
public void fillUtil(int screen[][], int currentx,int currenty, int oldColor, int newColor){
if(currentx < 0 || currentx >= screen.length || currenty < 0 || currenty >= screen[currentx].length){
return;
}
if(screen[currentx][currenty] != oldColor){
return;
}
screen[currentx][currenty] = newColor;
fillUtil(screen,currentx+1,currenty,oldColor,newColor);
fillUtil(screen,currentx-1,currenty,oldColor,newColor);
fillUtil(screen,currentx,currenty+1,oldColor,newColor);
fillUtil(screen,currentx,currenty-1,oldColor,newColor);
}
public static void main(String args[]){
int screen[][] = {{1,1,1,1,1,1},
{1,1,1,1,1,1},
{1,0,0,1,1,0},
{1,1,1,0,0,0},
{1,1,1,0,1,0},
{1,1,1,1,1,1}};
FloodFillAlgorithm ff = new FloodFillAlgorithm();
ff.fillDFS(screen, 0, 2, 3, 3);
for(int i=0; i < screen.length; i++){
for(int j=0; j < screen[i].length; j++){
System.out.print(screen[i][j] + " ");
}
System.out.println();
}
}
}