Passar posições de um vetor para uma matriz [Resolvido]

3 respostas
D

Fala galera blz?
Eu to quebrano a cabeça pra tentar fazer um algorítmo mas ta osso! Estou desenvolvendo uma aplicação para efetuar cálculo de melhor rota entre dois pontos.
Eu quero fazer o seguinte:

Eu tenho um vetor que informa a conexão entre os pontos e a distancia ex: vetor = {0,1,3,0,2,2,2,3,5}. A lógica desse vetor é a seguinte: O ponto 0 (zero) está ligado ao ponto 1 e a distancia entre ele é 3 ({0,1,3…). O ponto 0 está lugado ao ponto 2 e a distancia entre eles é 2 (…0,2,2…). O ponto 2 está ligado ao ponto 3 e a distancia entre eles é 5 (…2,3,5}).

Para cálcular a menor rota eu vou ter que montar uma matriz de adjacencia com base neste vetor. Então quero fazer o seguinte:

Considerando o vetor acima eu tenho no total 3 pontos, então a matriz tem que ser M[3][3].

Queria fazer um algorítmo que deixasse essa matriz da seguinte forma.

M[0][1] = 3;

M[0][2] = 2;

M[2][3] = 5;

O problema que eu tenho é que quando eu tenho mais conexão entre os pontos do que a quantidade total de pontos eu não consigo alocar todas as distancias na matriz.
Tentei ser o mais específico possível para não fazer muita confusão.

valeu galera!

3 Respostas

B

São sempre dois pontos e uma distância nesta ordem? Para cada conexão há sempre estes 3 itens?

Para separar os grupos de três em três você pode usar uma divisão inteira por 3, que seria a linha da tabela. Para obter cada item e colocar na coluna certa use o resto desta divisão. Resto 0 = ponto 1, resto 1 = ponto 2, resto 2 = distância.

Lavieri

vetorzinho macabro em ?? que tal fazer assim ??

public class Conexao {
    
    public static Conexao[] getConexoes(int[] matrizConexoes) {
        int numeroDeConexoes = matrizConexoes.length / 3;
        Conexao[] conexoes = new int[numeroDeConexoes];
        for(int i = 0; int i < numeroDeConexoes; i++)
              conexoes[i] = new Conexao(matrizConexoes[i], matrizConexoes[i+1], matrizConexoes[i+2]);
        return conexoes;
    }
    
    private int pontoInicial;
    private int pontoFinal;
    private ind distancia;
    
    public Conexao(int pontoInicial, int pontoFinal, int distancia) {
        this.pontoInicial = pontoInicial;
        this.pontoFinal = pontoFinal;
        this.distancia = distancia;
    }
    
    public int getDistancia() {
        return distancia;
    }

    public int getPontoInicial() {
        return pontoInicial;
    }
    
    public int getPontoFinal() {
        return pontoFinal;
    }
}

pronto... agora fica um pouco melhor...

int[] matrizDeConexoes = {0,1,3,0,2,2,2,3,5};
Conexao[] conexoes = Conexao.getConexoes(matrizDeConexoes);

ai depois disso fica facil ^^ os dados vc pode resgatar através dos métodos do objeto... boa sorte...

D

Pois é… Vetorzinho madito esse hehehehehe…
Cara brigadão mesmo. Consegui resolver o meu problema. Tava garrado faz mo data!

Criado 21 de março de 2009
Ultima resposta 23 de mar. de 2009
Respostas 3
Participantes 3