nyoj-483--Nightmare--BFS+允许回头
生活随笔
收集整理的這篇文章主要介紹了
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+允许回头的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知道创宇杨冀龙:2B产品经理的自我修养
- 下一篇: FinTech:一个单体系统足以撑起银行