Yo crearia una segunda matriz, del mismo tamaño que la primera e inicializada a 0.
El siguiente paso sería poner un 1 en mi posición actual.
Después crearía un algoritmo que empezando en la posición actual recorriese toda la matriz en todas direcciones comprobando si el número coincide con el inicial. En caso afirmativo se marca esa posición con un 1 en la matriz secundaria. En caso negativo se deja de buscar. Si no hay más posibilidades (tu posición actual está rodeada de '1' en la matriz secundaria) dejas de buscar.
Finalmente recorres la matriz secundaria y por cada 1 sustituyes el valor de la posición actual en la matriz buena por el número que corresponda.
Ejemplo:
Matriz inicial:
Código:
116456
115456
234566
789123
Posición (0,0) y pulso el 6
Código:
116456 110000 666456
115456 110000 665456
234566 000000 234566
789123 000000 789123
Posicion(0,0) y pulso el 4
Código:
666456 111000 444456
665456 110000 445456
234566 000000 234566
789123 000000 789123
Posicion(0,0) y pulso el 5
Código:
444456 111100 555556
445456 110100 555556
234566 000000 234566
789123 000000 789123
Posicion(1,5) y pulso el 2
Código:
555556 000001 555552
555556 000001 555552
234566 000011 234522
789123 000000 789123
PD.: El algoritmo de búsqueda podrías implementarlo recursivo, creo que es la opción más sencilla.
Un saludo