java 15益智游戏曼哈顿距离算法

ycl3bljg  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(180)

我试着通过调用曼哈顿距离来解决一个15字谜游戏,并采取可能的移动的最小值。

public int resolution() throws InterruptedException {
    //Map<Integer, Integer> disman= new TreeMap<Integer, Integer>();
    int n = this.posVide;
    ArrayList<Case> g= this.grille;
    System.out.println(g);
    int before=-1;
    while (!estResolue(g)){

        ArrayList<Integer> c=mouvementPossible(n);
        int minPos = 1000000;
        int minDist = 10000000;
        for (Integer i : c){
            int posFi=this.grille.get(i).getPos();
            int distanceMan= Math.abs( pos2D(i)[0] - pos2D(posFi)[0]) + Math.abs( pos2D(i)[1] - pos2D(posFi)[1] );
            if (minDist>distanceMan && distanceMan!=0 && before!=i){
                minPos=i;
                minDist=distanceMan;
            }
            //disman.put(i, distanceMan);
        }
        Collections.swap(g, n, minPos);
        before=minPos;
        n=minPos;
        System.out.println(g);
        Thread.sleep(1000);
    }
    return -1;}

格栅是一个案例列表,案例有一个属性位置谁是他们的最终位置!arraylist中每个案例的位置都是当前位置。我有一个方法来计算可能的移动谁工作良好。但我不明白为什么当我启动methode时我会进入一个无限循环。。。
【案例{pos=14}、案例{pos=10}、案例{pos=9}、案例{pos=6}、案例{pos=3}、案例{pos=5}、案例{pos=11}、案例{pos=4}、案例{pos 13}、案例{pos 7}、案例{pos 16}、案例{pos 8}、案例{pos 12}、案例{pos 0}、案例{pos 15}、案例{pos 2}】
【案例{pos=14}、案例{pos=9}、案例{pos=10}、案例{pos=6}、案例{pos=3}、案例{pos=5}、案例{pos=11}、案例{pos=4}、案例{pos 13}、案例{pos 7}、案例{pos 16}、案例{pos 8}、案例{pos 12}、案例{pos 0}、案例{pos 15}、案例{pos 2}】
【案例{pos=14}、案例{pos=10}、案例{pos=9}、案例{pos=6}、案例{pos=3}、案例{pos=5}、案例{pos=11}、案例{pos=4}、案例{pos 13}、案例{pos 7}、案例{pos 16}、案例{pos 8}、案例{pos 12}、案例{pos 0}、案例{pos 15}、案例{pos 2}】
【案例{pos=14}、案例{pos=9}、案例{pos=10}、案例{pos=6}、案例{pos=3}、案例{pos=5}、案例{pos=11}、案例{pos=4}、案例{pos 13}、案例{pos 7}、案例{pos 16}、案例{pos 8}、案例{pos 12}、案例{pos 0}、案例{pos 15}、案例{pos 2}】

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题