OBI-mina recursividade falhando

0 respostas
R

Alguém poderia me ajudar nessa questão da OBI de 2015, fase 2 e se chama mina? Usando recursividade de preferência.

import java.util.Scanner;

public class Mina {

int x;

int in=0;

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner leitor = new Scanner(<a href="http://System.in">System.in</a>);

int n,i,i2,cont1,cont2,x;

x=0;

cont1=0;

cont2=0;

Mina mina=new Mina();

int vet[][], vet2[][];

n=leitor.nextInt();

vet = new int [n][n];

vet2 = new int [n][n];

for(i=0;i<n;i++){

for(i2=0;i2<n;i2++){

vet[i][i2]=leitor.nextInt();

vet2[i][i2]=0;

}

}

for(i=0;i<n;i++){

for(i2=0;i2<n;i2++){

System.out.println(vet[i][i2]+" “+i+” "+i2);
}
	}
	System.out.println("");
	mina.mina(vet2,vet,cont1,cont2,x,n,mina);
	System.out.println(mina.getX());
	
}
void mina(int[][] vet2,int[][] vet,int cont1, int cont2,int x,int n,Mina mina){
	int vett2[][]=new int[n][n];
	vett2=vet2;
	vett2[cont1][cont2]=-1;
	System.out.println(" ");
	System.out.println(cont1+" "+cont2);
	System.out.println(" ");
	if((cont1==n-1)&&(cont2==n-1)){
		System.out.println(x+"asd");
		mina.setX(x);
	}else{
		if(vet[cont1][cont2]==1){
			System.out.println(cont1+" aqui "+cont2+" "+vet[cont1][cont2]);
			x=x+1;
			
		}
		
		
			if(cont1+1<n){
				System.out.println("oloco");
				System.out.println(vett2[n-1][n-1]);
				for(int i=0;i<n;i++){
					for(int i2=0;i2<n;i2++){
						System.out.println(vett2[i][i2]+" "+i+" "+i2);
						
					}
				}
				if(vett2[cont1+1][cont2]==0){
					System.out.println("cont1+ "+(cont1+1));
					mina.mina(vett2, vet, cont1+1, cont2, x, n, mina);
				}
			}
			
			if(cont1-1>-1){
				if(vett2[cont1-1][cont2]==0){
					System.out.println("cont1- "+(cont1-1));
					mina.mina(vett2, vet, cont1-1, cont2, x, n, mina);
				}
			}
			
			if(cont2+1<n){
				if(vett2[cont1][cont2+1]==0){
					System.out.println("cont2+ "+(cont2+1));
					mina.mina(vett2, vet, cont1, cont2+1, x, n, mina);
				}
			}
			
			if(cont2-1>-1){
				if(vett2[cont1][cont2-1]==0){
					System.out.println("cont2- "+(cont2-1));
					mina.mina(vett2, vet, cont1, cont2-1, x, n, mina);
				}
			}
		
	}
	
	
}

void setX(int x){
	if(in==0){
		in=1;
		this.x=x;
	}else if(this.x>x){
		this.x=x;
	}
}

int getX(){
	return x;
}

}

Eu fiz esse código. O problema que eu acho que estou tendo é a questão das variáveis. A cada vez que eu chamo a função mina, o que acontece quando modifico um valor de uma variável?? Esse valor vai para todas as funções chamadas?? Por exemplo o vet2 e o vett2. E ignorem esses System, pois eu estava testando, para tentar identificar o(s) problema(s).

Criado 29 de maio de 2018
Respostas 0
Participantes 1