Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package TP;
- import java.util.ArrayList;
- public class Mapa {
- private Barco [] barcos;
- private int [][] distancias; // distancia de i a j
- private int [] distanciaEspejo; // distancia al espejo
- private int n;
- public Mapa(int tamano){
- n= tamano;
- barcos = new Barco [n];
- distancias = new int [n][n];
- distanciaEspejo = new int [n];
- for (int i=0; i<n; i++){
- barcos [i] = new Barco(i,"Barco" + i);
- distanciaEspejo[i] = 0;
- for (int j=0; j<n; j++){
- distancias[i][j] = 0; //distancias default en 0
- }
- }
- }
- public int tamano(){
- return n;
- }
- public void asignarNombre(Integer ciudadID, String nombre){
- barcos[ciudadID].Nombre = nombre;
- }
- public void setDistIJ(int i, int j, int dist, boolean simetrico){
- distancias[i][j] = dist;
- if (simetrico){
- distancias[j][i] = dist;
- }
- }
- public void setDistEsp(int i, int dist){
- distanciaEspejo[i] = dist;
- }
- public int getDistEsp(int i) {
- return distanciaEspejo[i];
- }
- // distancias nominales
- public int getDistIJ(int i, int j){ // si es adyacente tomamos ady[i][j]
- return distancias[i][j];
- }
- //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- ArrayList<Barco> destruidos = new ArrayList<Barco>();
- ArrayList<Barco> caminoMinimoProbable(){
- ArrayList<Barco> ret = new ArrayList<Barco>();
- Barco puntero = null ;
- ret.add(barcoCercanoCosta());
- puntero = (barcoCercanoCosta()); // consigo el barcoOrigen para funcion barcoMasCercano
- while(ret.size()!=barcos.length)
- ret.add(barcoMasCercano(puntero)); //busco el mas cercano al barco que uso de puntero
- puntero =barcoMasCercano(puntero);
- destruidos.add(puntero);
- return ret;
- }
- //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- private Barco barcoMasCercano(Barco barcoOrigen){
- Barco barcoOrigen1 = barcoOrigen ;
- Barco puntero = null ;
- Barco aux = null ;
- int dist = 0 ;
- for (Barco barco : barcos) {
- dist= getDistIJ(barcoOrigen1.id,barco.id);
- // System.out.println( dist);
- for (Barco bar : barcos) {
- if (getDistIJ(barcoOrigen1.id, bar.id) <= dist && !destruidos.contains(barco) ) {
- puntero = bar;
- dist = (getDistIJ(barcoOrigen1.id, bar.id )) ;
- puntero = bar;
- destruidos.add(puntero);
- }
- else {
- puntero = barco;
- dist = (getDistIJ(barcoOrigen1.id, barco.id )) ;
- puntero = barco;
- destruidos.add(puntero);
- }
- }
- }
- return puntero ;
- }
- //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- private Barco barcoCercanoCosta() {
- Barco ret = null;
- int dist = 100 ; // no es fino ? jajaja
- for (Barco barco : barcos) {
- if (getDistEsp(barco.id)<= dist) { //si el elemento es el de menor distancia al espejo de todo el array
- dist = getDistEsp(barco.id); //conservo para comparaciones
- ret = barco ; // conservo el barco
- }
- }
- return ret; //devuelvo barco cercano
- }
- //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- //private Barco barcoMasCercano(Barco barcoOrigen){
- // Barco ret = barcoOrigen ;
- // Barco puntero = null ;
- // int dist = 10000 ;
- //
- // for (Barco barco : barcos) {
- //
- // if (getDistIJ(ret.id, barco.id) <= dist && !destruidos.contains(barco) ) {
- // puntero = barco;
- // dist = (getDistIJ(ret.id, barco.id )) ;
- // destruidos.add(puntero);
- // }
- // }
- // return ret;
- //}
- //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- Integer distancia(ArrayList<Barco> camino){
- Integer _distancia = 0;
- if (camino.size() > 0){
- _distancia = distanciaEspejo[camino.get(0).id];
- }
- for (int i=0;i< camino.size()-1;i++){
- _distancia = _distancia + distancias[camino.get(i).id][camino.get(i+1).id];
- }
- return _distancia;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement