poj 3009 Curling 2.0 DFS(二)
nt step){
if(step>10)return ;
for(int i=0;i<4;i++){
int nx=x+dir[i][0],ny=y+dir[i][1];
if(nx<0||nx>=N||ny<0||ny>=M) continue;
if(maze[nx][ny]==1)continue; //旁边是障碍,无法走。
while(maze[nx][ny]!=1)
{
if(maze[nx][ny]==3) //一定要先判断,若终点就在旁边。
{
if(ans>step){
ans=step;
return ;
}
}
nx+=dir[i][0];ny+=dir[i][1];
if(nx<0||nx>=N||ny<0||ny>=M) break;
}
if(nx>=0 && nx=0 &&ny
>M>>N){
if(N+M==0)break;
for(int i=0;i>maze[i][j];
if(maze[i][j]==2){
sx=i;sy=j;
}
}
ans=999999;
dfs(sx,sy,1);
if(ans>10) cout<<-1<