OBI-mina recursividade falhando

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(System.in);
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).