Ola pessoal
Estou com um problema de logica aqui para resolver ,
é o Seguinte :
Tenho 6 Cidades ,
a Distanco entre elas,
e Precisa percorre todas elas pelo menor caminho sem passar pela mesma cidade 2 x
e por fim chegar de volta a cidade inicial .
a Imagem mostra como seria partindo da cidade 6 :
o Caminho seria
6-1-3-4-5-2-6
Pois bem eu ja resolvi quase tudo falta so ele testar se ja passou pela cidade X e nao pegar a mesma 2 vezes , passei maior tempo tentando e nada .
alguem me ajude pls abaixo o Codigo Fonte :
[code]// Funcao que Seleciona a cidade com menor distancia
public class Teste
{
public static int pegaMenor(int distancias[])
{
int j=9;
int d=1;
for (int i=1; i<7; i++){
if(distancias[i]<j && distancias[i]!=0){
j=distancias[i];
d=i;
}
}
return(d);
}
// funçao que cria a Lista de cidades possiveis para cada Cidade
public static int[] listaCidades(int a){
int [][] x = new int [7][7];
int [] k = new int [7];
x[1][1] = 0;
x[2][2] = 0;
x[3][3] = 0;
x[4][4] = 0;
x[5][5] = 0;
x[6][6] = 0;
x[1][2] = 2;
x[1][3] = 1;
x[1][4] = 4;
x[1][5] = 9;
x[1][6] = 1;
x[2][1] = 2;
x[2][3] = 5;
x[2][4] = 9;
x[2][5] = 7;
x[2][6] = 2;
x[3][1] = 1;
x[3][2] = 5;
x[3][4] = 3;
x[3][5] = 8;
x[3][6] = 6;
x[4][1] = 4;
x[4][2] = 9;
x[4][3] = 3;
x[4][5] = 2;
x[4][6] = 6;
x[5][1] = 9;
x[5][2] = 7;
x[5][3] = 8;
x[5][4] = 2;
x[5][6] = 2;
x[6][1] = 1;
x[6][2] = 2;
x[6][3] = 6;
x[6][4] = 6;
x[6][5] = 2;
//cria e preenche vetor distancias
for (int i=1; i<7; i++){
k[i]=x[a][i];
}
return(k);
}
public static void main(String[] args)
{
int cidadeInicial=6;
int proximaCidade=0;
int [] distancias = new int [7];
int [] circuitoParcial =new int [7];
// Adiciona a Primeira Cidade ao Circuito
circuitoParcial[1]=cidadeInicial;
distancias=listaCidades(cidadeInicial);
// Laço Principal
for(int i=2;i<7;i++) {
// pega a proxima cidade mais perto
proximaCidade= pegaMenor(distancias);
// imprime a proxima cidade na tela
System.out.println(proximaCidade+" proximaCidade:" );
// Atualiza o vetor distancias
distancias=listaCidades(proximaCidade);
// inclui a cidade vizitada no circuito
circuitoParcial[i]=proximaCidade;
}
// no final imprime o caminho percorrido
System.out.println("caminho Percorrido : " );
for(int y=1;y<7;y++) {
System.out.println( circuitoParcial[y] );
}
//System.out.println(b);
}
}[/code]
Por favor me ajudem , é meu primeiro programa em Java .