迷宫问题中的递归问题

179 阅读1分钟
  • 递归的本质是穷举。
  • 数据结构中的向右将当前位置置数,之后再次调用自身向右并重置当前位置,实际上是在进行重复性试探。在栈底的视角来看,这将耗尽向右的可能性,向下也是同理。在迷宫问题中递归的原理与穷举极为相似,唯一不同的是所采用的方式近似于微元法,对开发者非常友好。
Main{
    map=int[8][7];
    map={
        [1,1,1,1,1,1,1],
        [1,0,0,0,0,0,1],
        [1,0,0,0,0,0,1],
        [1,1,1,0,0,0,1],
        [1,0,0,0,0,0,1],
        [1,0,0,0,0,0,1],
        [1,0,0,0,0,0,1],
        [1,1,1,1,1,1,1]
    }
    check(i,j){
        if(i==7&&j==6){
            print();
            return;
        }

        if(canmove(i,j+1))向右,map[i][j]=5,canmove(i,j+1) ,map[i][j]=0,return true;
        if(canmove(i,j-1))return true;类似向右;
        if(canmove(i+1,j))return true;同上;
        if(canmove(i-1,j))return true;同上;
        

    }

    canmove(K,L){
        if(K==0||L==0||K==8||L==7)碰壁,return false;
        elseif(map[K][L]==1)碰壁,return false;
        elseif(map[K][L]==5),重复,return false;
        else return true;
    }



    main(){

    }
}