Difference between revisions of "Solução: Problema da matriz do Paint (Luis Bernardo)"
From AdonaiMedrado.Pro.Br
(New page: <code lang="Java"> public class MatrizDoPaint { private int valorInicial; public MatrizDoPaint(){ valorInicial = 0; } public void Pintar(int[][] matriz,int colun...) |
(No difference)
|
Revision as of 13:26, 20 May 2009
public class MatrizDoPaint {
private int valorInicial;
public MatrizDoPaint(){
valorInicial = 0;
}
public void Pintar(int[][] matriz,int coluna,int linha,int novoValor){
if(dentroLimites(matriz, coluna, linha)){
valorInicial = matriz[linha][coluna];
if(valorInicial!= novoValor){
pintarRestantes(matriz,coluna,linha,novoValor);
}
}
}
//Percorre a matriz semelhante a rosa dos ventos
private void pintarRestantes(int[][] matriz, int coluna, int linha, int novoValor) {
if(dentroLimites(matriz, coluna, linha)){
int valorPosicao = matriz[linha][coluna];
if(valorPosicao==valorInicial){
matriz[linha][coluna] = novoValor;
//Frente
pintarRestantes(matriz, coluna+1, linha, novoValor);
//Tras
pintarRestantes(matriz, coluna-1, linha, novoValor);
//Cima
pintarRestantes(matriz, coluna, linha-1, novoValor);
//Baixo
pintarRestantes(matriz, coluna, linha+1, novoValor);
//Diagonal Superior esquerda
pintarRestantes(matriz, coluna-1, linha-1, novoValor);
//Diagonal Inferior esquerda
pintarRestantes(matriz, coluna-1, linha+1, novoValor);
//Diagonal Superior direita
pintarRestantes(matriz, coluna+1, linha-1, novoValor);
//Diagonal Inferior direita
pintarRestantes(matriz, coluna+1, linha+1, novoValor);
}
}
}
//Dentro Limites considera que a matriz do problema sera quadrada
private boolean dentroLimites(int[][] matriz,int x, int y){
if((x>=0)&&(x<matriz[0].length)){
if((y>=0)&&(y<matriz.length)){
return true;
}
else{
return false;
}
}else{
return false;
}
}
public void exibeMatriz(int[][] matriz) {
for(int i = 0; i< matriz.length; i++){
if(i==0)
System.out.print("{ ");
for(int j = 0; j<matriz[i].length; j++){
if(j==0)
System.out.print("{"+matriz[i][j]+",");
if(j==(matriz[i].length-1)&&(i!=(matriz.length-1) ))
System.out.print(matriz[i][j]+"},");
if((j>0)&&(j<(matriz.length-1)))
System.out.print(matriz[i][j]+",");
if(j==(matriz[i].length-1)&&(i==(matriz.length-1) ))
System.out.print(matriz[i][j]+"}");
}
if((i>=0)&&(i<(matriz[i].length-1)))
System.out.print("\n ");
}
System.out.print("}\n");
}
}
public class MainPaint {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
MatrizDoPaint mat = new MatrizDoPaint();
int [][] matriz= {{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} };
mat.Pintar(matriz ,0,0,2);
mat.exibeMatriz(matriz);
}
} code>