首页 > 代码库 > CC150 8.6

CC150 8.6

8.6 Implement the “paint fill” function that one might see on many image editing programs. That is, given a screen (represented by a 2 dimensional array of Colors), a point, and a new color, fill in the surrounding area until you hit a border of that color.

interface Panter
{
}

class Pos
{
  int x,
  int y, 
  void paint(Panter p);  
  boolean isPainted();
}

paint(Set<Pos> borders, Pos start, Panter panter)
{
  if (borders.contains(start))
    return;
  
  if (start.isPainted())
    return;
    
  start.paint(panter);
    
  paint(borders, start.up(), panter);
  paint(borders, start.down(), panter);
  paint(borders, start.left(), panter);
  paint(borders, start.right(), panter);
}


Other other like BFS tree.

CC150 8.6