日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

迷宫探索

發布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迷宫探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* 5 4 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 4 3 */#include<iostream>using namespace std;struct node {int x;//橫坐標int y;//縱坐標int f;//父親在隊列中的編號int s;//步數 };int main() {node que[2051];int a[51][51]={0};int book[51][51]={0};//定義一個用于表示走的方向的數組int next[4][2]={{0,1},//向右走{1,0},//向下走{0,-1},//向左走{-1,0}};//向上走int head,tail;int i,j,k,n,m,startx,starty,p,q,tx,ty,flag;cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}cin>>startx>>starty>>p>>q;//隊列初始化head=1;tail=1;//往隊列插入迷宮入口坐標que[tail].x=startx;que[tail].y=starty;que[tail].f=0;que[tail].s=0;tail++;book[startx][starty]=1;flag=0;//用來標記是否到達目標地點,0表示臨時沒有到達.1表示到達//當隊列不為空的時候循環while(head<tail){//枚舉4個方向for(k=0;k<=3;k++){tx=que[head].x+next[k][0];ty=que[head].y+next[k][1];//推斷是否越界if(tx<1||tx>n||ty<1|ty>m)continue;//推斷障礙物是否在路上if(a[tx][ty]==0&&book[tx][ty]==0){book[tx][ty]=1;que[tail].x=tx;que[tail].y=ty;que[tail].f=head;que[tail].s=que[head].s+1;tail++;}if(tx==p&&ty==q){flag=1;break;}}if(flag==1)break;head++;}//打印隊列中末尾最后一個點(目標點)的步數//注意tail是指向隊列隊尾(即最后一位)的下一個位置,所以這須要-1cout<<que[tail-1].s<<endl;return 0; }


?

轉載于:https://www.cnblogs.com/yangykaifa/p/7296179.html

總結

以上是生活随笔為你收集整理的迷宫探索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。