Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


Você não está conectado. Conecte-se ou registre-se

BackTracking!!!

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 BackTracking!!! em Dom Nov 30, 2014 1:52 pm

Tenho que fazer um programa assim: Numa Matriz de int de tamanho aleatório possui quatro tipos de entrada(entrada do inicio[-2], do fim[-3], as que não podem "pisar"[-1] e as que vão somar no risco[inteiros positivos]) ao passar por um lugar da matriz o valor que ela possui se soma ao risco do caminho e tem que retornar o Caminho com o menor risco.

Métodos que já tem: Classe Caminho(int risco, int comprimento, Posicao[] S)
- setRisco(int risco)//delimita o risco
- getRisco//retorna o risco
- push(Posicao p)//coloca uma outra Posicao em S
- pop//tira uma Posicao do vetor
- clone//clona o Caminho
- isIn//verifica se a Posicao já foi passada antes

Classe Mapa()
- geraMapa//gera um mapa com valores aleatórios

Classe Posicao(int x, int y)
-set(int x, int y)//especifica qual é essa posicao
-getX//retorna o valor de x
-getY//retorna o valor de y
-cloce//clona a posicao

Classe Resolucao(Posicao Inicio, Posicao Fim, Caminho definitivo, Caminho temp)
- primeiraVez(int[][] m)//verifica se é a primeira vez tentando e inicia as posições Inicio e Fim
- getInicio(int[][] m)//retorna a posição Inicio
- getFim(int[][] m)//retorna a posição Fim
- isAcceptable(int[][] m, Posicao p, Caminho c)//ve se o passo é possível
- eMenor(Caminho def, Caminho ant)//retorna o caminho com menor risco

Esses códigos abaixo devem ter alguma coisa de errado então não levem á sério
Código:
public Caminho resolve(int[][] m){//resolução do caminho
      primeiraVez(m);//verifica se é a primeira vez que resolve este caminho
      Posicao t = temp.top().clone();//última posição criada
      if(m[t.getX()][t.getY()]==-3){//caso base, já chegou no final
          eMenor(definitivo, temp);//comparação se o caminho é o menor
          return definitivo;
      }else{t.set(t.getX()-1,t.getY());//posição acima
          if(isAcceptable(m, t, temp))
              andando(t, m);
             
        }
  }

Código:
void andando(Posicao next, int[][] m){//próximo passo a ser dado
      temp.setRisco(temp.getRisco()+m[next.getX()][next.getY()]);
      temp.push(next.clone());
     
  }

Ver perfil do usuário

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum