poj 3009 Curling 2.0 DFS(二)

2014-11-23 21:38:15 · 作者: · 浏览: 13
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<