Problema da matriz do Paint

From AdonaiMedrado.Pro.Br
Jump to: navigation, search

Dificuldade Única

Sendo M uma matriz e P um elemento da matriz com o valor V, considera-se que a matriz foi "pintada" corretamente se dado um novo valor K, P e todos os seus elementos vizinhos com o mesmo valor V passarem a ter o novo valor K. Cada novo vizinho pintado deve ser considerado um novo elemento P para o qual a operação descrita deverá novamente ser repetida.

Considere que:

  • a posição de P é dada por dois valores x e y. x sendo o índice de coluna e y o de linha, ambos iniciados em zero no local onde normalmente corresponderia ao elemento 1x1 da matriz.
  • se P já contiver o valor K, ou seja, V=K, nenhuma operação deverá ser executada.
  • são considerados vizinhos os elementos da horizontal, vertical ou diagonais.

Faça uma classe de nome MatrizDoPaint com um método público Pintar que receberá quatro parâmetros nesta ordem:

  • Matriz int[][] a ser pintada.
  • Posição x do elemento P.
  • Posição y do elemento P.
  • Novo valor do elemento P (K).

A classe deverá alterar o primeiro parâmetro, executando a "pintura" (alterando os valores conforme descrição).

Exemplo 1

Entrada

{ {1, 1, 3, 0, 0, 0, 1},
  {0, 0, 1, 2, 0, 1, 0},
  {0, 0, 1, 0, 1, 0, 1},
  {9, 6, 3, 1, 0, 1, 0},
  {6, 2, 4, 7, 1, 0, 1},
  {0, 0, 0, 0, 0, 0, 1},
  {0, 1, 9, 6, 0, 1, 0} } , 0, 1, 2

Saída

{ {1, 1, 3, 0, 0, 0, 1},
  {2, 2, 1, 2, 0, 1, 0},
  {2, 2, 1, 0, 1, 0, 1},
  [9, 6, 3, 1, 0, 1, 0},
  {6, 2, 4, 7, 1, 0, 1},
  {0, 0, 0, 0, 0, 0, 1},
  {0, 1, 9, 6, 0, 1, 0} }

Exemplo 2

Entrada

{ {1, 1, 3, 0, 0, 0, 1},
  {0, 0, 1, 2, 0, 1, 0},
  {0, 0, 1, 0, 1, 0, 1},
  {9, 6, 3, 1, 0, 1, 0},
  {6, 2, 4, 7, 1, 0, 1},
  {0, 0, 0, 0, 0, 0, 1},
  {0, 1, 9, 6, 0, 1, 0} } , 0, 0, 2

Saída

{ {2, 2, 3, 0, 0, 0, 2},
  {0, 0, 2, 2, 0, 2, 0},
  {0, 0, 2, 0, 2, 0, 2},
  {9, 6, 3, 2, 0, 2, 0},
  {6, 2, 4, 7, 2, 0, 2},
  {0, 0, 0, 0, 0, 0, 2},
  {0, 1, 9, 6, 0, 2, 0}}