все кратчайшие пути между двумя точками - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть две точки в массиве 10 × 10, и я хочу все пути между этими двумя точками.
кроме того, у меня есть ограничение в моих шагах:
only [(Right затем Up), (Rightзатем Вниз), (Влево, затем Вверх), (Вниз, затем влево)] Движение разрешено.
Какие алгоритмы я могу использовать для этого?

Я пытался с этим кодом, но не дал мне все пути

    void finding(int sW, int sH, int dW, int dH, String path,int strategy) {
        if(isOuted(sW, sH, dW, dH) || visited[dW][dH])return;
        visited[dW][dH] = true;
        if(strategy == 1){
        RD(sW, sH, dW, dH, path+"RU");
        RU(sW, sH, dW, dH, path+"RU");
        LU(sW, sH, dW, dH, path+"RU");
        DL(sW, sH, dW, dH, path+"RU");
        }else if strategy == 2 ...
    }

и в моих методах, например, для RU (это означает, что прямо сейчас вверх) у меня есть:

private void RU(int sW, int sH, int dW, int dH, String path){

        if(isPath(++sW, sH, dW, dH)){
            System.out.println(path+"R");
            return;
        }
        if(isPath(sW, ++sH, dW, dH)){
            System.out.println(path+"RU");
            return;
        }
        finding(sW,sH,dW,dH,path,1);

    }

это хороший подход?!
Iнужен алгоритм, который более эффективен и надежен.

...