第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

數(shù)據(jù)結(jié)構(gòu)之求解迷宮問(wèn)題Ⅱ

这次介绍用队列实现迷宫求解问题~
用栈解决迷宫问题用的是“穷举求解” 即从入口出发,顺某一方向试探,若能走通,则继续往前走,否则原路返回,换另一个方向继续试探,直至走出去。

用队列方式求解迷宫,其思想是将每个方块的所有可走路径均存放到队列中,采用限制条件避免重复搜索,最后求得最短路径。对应算法:
首先先定义个迷宫~

#define M 4
#define N 4
int mg1[M+2][N+2]={
{1,1,1,1,1,1},
{1,0,0,0,1,1},
{1,0,1,0,0,1},
{1,0,0,0,1,1},
{1,0,0,0,0,1},
{1,1,1,1,1,1},
}

设置基本变量

int minlen=0;//最短路径长度
int num=1;//用来记录路径条数

队列输出路径

void print1(int front)
{
    int  k = front,j;   
    int ns = 0; //计算本次路径长度
    do{
    j=k;
    k=Qu[k].pre;
    ns++;
}while(k!=-1);
if (num==1) minlen=ns; //就是这条啦!
if(ns==minlen){      //去找第一条或者其他条
 ns = 0;
 k = front;
printf("第%d条最短路径(反向输出):\n",num++);
do
{
j=k;
printf("\t(%d,%d)",Qu[k].i,Qu[k].j);
k=Qu[k].pre;
if(++ns%5==0) printf("\n");
}while(k!=-1);
printf("\n");
}

}

搜索路径

void mgpath1(int x1,int y1,int x2,int y2){  // 从(x1,y1)->(x2,y2)
int i,j,find=0,di,k;
rear++;
Qu[rear].i=x1;
Qu[rear].j=y1;
Qu[rear].pre=-1;                            //将(x1,y1)入队
while (front!=rear){                        //队列不为空,循环
front++;                                          //出队,元素仍在
for(di=0;di<4;di++){                       //循环扫描,把每一个可走的坐标插入队列
        switch(di){
            case 0:i=Qu[front].i-1;j=Qu[front].j;break;
            case 1:i=Qu[front].i;j=Qu[front].j+1;break;
            case 2:i=Qu[front].i+1;j=Qu[front].j;break;
            case 3:i=Qu[front].i,j=Qu[front].j-1;break;
        }
        if(i>0 && j>0 && mg1[i][j]==0 && (i!=Qu[Qu[front].pre].i || j!=Qu[Qu[front].pre].i)){//不越界且可走 以及避免回退
            rear++;     //相邻方块插入队列
            Qu[rear].i=i;Qu[rear].j=j;
            Qu[rear].pre=front;   //指向路径中上一个方块下标
            }
    }
}
    for(k=0;k<=rear;k++){
        if(Qu[k].i==x2&&Qu[k].j==y2){   //找到了
            find=1;
            print1(k);
            }
        }
    if(!find) printf("根本没有出口!\n");
}

就这样,一个队列的迷宫算法已经实现~~~

點(diǎn)擊查看更多內(nèi)容
11人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
學(xué)生
手記
粉絲
64
獲贊與收藏
1508

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消