acm编程问题;
题意:S到T的最短路径,但是行走过程中改变方向的话步数要加1,输出最小步数,不能到达输出-1;
测试数据:
SampleInput
2
55
#####
#...#
#.#.#
#S#T#
#####
45
#.#.#
#.#.#
#S#T#
#####
SampleOutput
8
-1
以下是我的代码:
#include
#include
#include
#include
#include
usingnamespacestd;
structnode{
intx,y;
intstep;
charfx;
};
charmap[110][110];
intdir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
intnum[120];
intn,m;
intsx,sy,dx,dy;
boolflag;
nodef;
intk1;
intbfs()
{
inti,j,k;
inttx,ty;
chartemp;
intsstep;
queueq;
nodefront,rear;
while(!q.empty())q.pop();
q.push(f);
while(!q.empty())
{
front=q.front();
q.pop();
if(front.x==dx&&front.y==dy){
num[k1++]=front.step;
flag=1;
}
map[front.x][front.y]='#';
for(i=0;i