在二维阵列中查找最便宜的路线(汽车通行费)

时间:2019-04-02 01:26:43

标签: arrays recursion multidimensional-array path maze

我有这个任务,我需要在给定的二维数组中找到最便宜的路线。假设您是一辆从阵列左下角开始的汽车,并且需要在右上角到达目的地,但是您只能向北和向东行驶。我需要写一个递归方法

1。应显示将使您花费最少通行费的路线。
2.显示该路线上每个通行费所支付的金额,如何到达目的地的指示以及总费用。这是示例输出:

Finding the Cheapest Routes:
Grid #1:
12 3 15 8 21
10 2 10 13 9
11 8 19 17 3
Cheapest Route: 11 8 2 3 15 8 21
Direction: EAST NORTH NORTH EAST EAST EAST
Cheapest Cost: $68  
Grid #2:
10 2
15 9
Cheapest Route: 15 9 2
Direction: EAST NORTH 
Cheapest Cost: $26  
Program is Complete

我已经阅读了网格并在我的主要方法中拥有了这些变量,(已经指定了BTW gridRows和gridColumns并进行了读入(例如,对于第一个网格,gridRows为3,gridColumns为5)

int posX = gridRows -1; // keeps track of the x-coord of the position
int posY= 0; // keeps track of the y-coord of the position
int destPosX = gridColumns-1; //both these variables are the destination     of routeFinder
int destPosY = 0; 
int dist = 0;


int minDist = routeFinder(route, posX, posY, Integer.MAX_VALUE, dist,   destPosX, destPosY);

我正在努力构建一种可行的递归方法,这就是我到目前为止所掌握的方法,我一直坚持如何保存路径以及如何打印方向。

public static int routeFinder (int[][] route, int posX, int posY, int minDist, int dist, int destPosX, int destPosY){       
    //if posX & posY reach the destination
    if(posX == destPosX && posY == destPosY) {
        return Integer.min(dist,minDist);
    }
    //move North
    if(posX -1 >= 0 && posY < route[0].length) {
        minDist = routeFinder(route, posX - 1, posY, minDist, dist + 1, destPosX, destPosY);

    }
    //move East
    if(posX >= 0 && posY +1 < route[0].length) {
        minDist = routeFinder(route, posX, posY + 1, minDist, dist + 1, destPosY, destPosY);
    }
    return minDist;
}

我被困住了,我不知道如何从这里继续...我需要首先找到一种方法来找到所有可能的路线,然后找到一种方法来跟踪最便宜的路线。.任何帮助都会不胜感激。

0 个答案:

没有答案