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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

nyoj-483--Nightmare--BFS+允许回头

發布時間:2025/3/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nyoj-483--Nightmare--BFS+允许回头 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:準備好了嗎here~~~

#include<stdio.h> #include<string.h> #include<queue> using namespace std; int dx[4]={1,-1,0,0}; int dy[4]={0,0,-1,1}; int map[10][10]; int n,m; struct Nightmare {int x,y;int step;//前進的步數int time;//每走一步剩余時間 }; int bfs(int a,int b) {queue<Nightmare> Q;Nightmare q,p;p.x=a;p.y=b;p.step=0;p.time=6;Q.push(p);while(!Q.empty()){q=Q.front();Q.pop();if(map[q.x][q.y]==3) return q.step;if(q.time==1) continue;for(int i=0;i<4;i++){p.x=q.x+dx[i];p.y=q.y+dy[i];p.time=q.time-1;p.step=q.step+1;if(map[p.x][p.y]){if(map[p.x][p.y]==4){p.time=6;map[p.x][p.y]=1;}Q.push(p);}}}return -1; } int main() {int N,x,y;;scanf("%d",&N);while(N--){scanf("%d%d",&n,&m);memset(map,0,sizeof(map));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&map[i][j]);if(map[i][j]==2){x=i;y=j;}}}printf("%d\n",bfs(x,y));} }

總結

以上是生活随笔為你收集整理的nyoj-483--Nightmare--BFS+允许回头的全部內容,希望文章能夠幫你解決所遇到的問題。

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