大多数刚需封锁4区域可以,DFS地区封锁。BFS无论是通过
#include "stdio.h"#include "string.h"#include "queue"using namespace std;int dir[4][2]={ {1,0},{-1,0},{0,1},{0,-1}};int s_x,s_y,n,m,t;char str[11][11];struct node{ int x,y,step,key;};int bfs(){ queueq; node cur,next; int i; int hash[11][11][2]; cur.x=s_x; cur.y=s_y; cur.step=0; cur.key=0; q.push(cur); memset(hash,0,sizeof(hash)); hash[s_x][s_y][0]=1; while (!q.empty()) { cur=q.front(); q.pop(); if (cur.step>=t) return -1; for (i=0;i<4;i++) { next.x=cur.x+dir[i][0]; next.y=cur.y+dir[i][1]; if (next.x<0 || next.y<0 || next.x>=n || next.y>=m) continue; if (str[next.x][next.y]=='#') continue; next.step=cur.step+1; next.key=cur.key; if (str[next.x][next.y]=='J') next.key=1; if (hash[next.x][next.y][next.key]==1) continue; hash[next.x][next.y][next.key]=1; q.push(next); if (str[next.x][next.y]=='E' && next.key==1) return 1; } } return -1;}int dfs(int k){ int i,j; char ch; if (k==0) return bfs(); for (i=0;i
版权声明:本文博客原创文章,博客,未经同意,不得转载。