题目大意:这个题是以坦克大战为原型出来的题目,就是走迷宫的变种,给定一个地图mxn的地图,地图上有普通的砖B,金砖S,河R,空地E,和一个宝物位置T,和你的位置Y,求吃到宝物的最小步数(坦克通过普通砖B需要两步,空地E一步,不能通过金砖和河)..
#include#include using namespace std; int n,m; int mintime[305][305]; char map[305][305]; struct point { int x,y,time; }s,e; int h[4][2]={1,0,-1,0,0,-1,0,1}; queue q; int bfs(point s) { int i,j,x,y; point t,tt; while(!q.empty()) q.pop(); q.push(s); mintime[s.x][s.y]=0; while(!q.empty()) { t=q.front(); q.pop(); for(i=0;i<4;i++) { x=t.x+h[i][0]; y=t.y+h[i][1]; if(x>=0&&x =0&&y >n>>m&&(n+m)) { for(i=0;i >map[i][j]; mintime[i][j]=100000005; if(map[i][j]=='Y') { s.x=i; s.y=j; s.time=0;} if(map[i][j]=='T') { e.x=i; e.y=j;} } int ans=bfs(s); if(ans<100000005) cout<