【DFS】POJ3009-Curling 2.0
2015-08-08 11:20
344 查看
【题目大意】
给出一张地图,一旦往一个方向前进就必须一直向前,直到一下情况发生:(1)碰到了block,则停在block前,该block消失;(2)冲出了场地外;(3)到达了终点。改变方向十次以上或者冲出场外都判输,问至少几步能到达终点,无法到达输出-1。
【思路】
DFS,往四个方向搜索,每次不断向前直到出现如上三种情形,并根据三种情形操作,有点类似于模拟。回溯的时候犯的小错误记在代码的注释里面了。
给出一张地图,一旦往一个方向前进就必须一直向前,直到一下情况发生:(1)碰到了block,则停在block前,该block消失;(2)冲出了场地外;(3)到达了终点。改变方向十次以上或者冲出场外都判输,问至少几步能到达终点,无法到达输出-1。
【思路】
DFS,往四个方向搜索,每次不断向前直到出现如上三种情形,并根据三种情形操作,有点类似于模拟。回溯的时候犯的小错误记在代码的注释里面了。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int MAXN=20+5; const int INF=0x7fffffff; int map[MAXN][MAXN]; int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; int line,row,sx,sy; int ans; void dfs(int x,int y,int step) { if (step>10 || step>ans) return; for (int i=0;i<4;i++) { int tx=x+dx[i],ty=y+dy[i]; if (map[tx][ty]==1) continue; while (tx<line && ty<row && tx>=0 && ty>=0 && map[tx][ty]!=3 && map[tx][ty]!=1) { tx+=dx[i]; ty+=dy[i]; } if (tx==line || ty==row || tx<0 || ty<0) continue; /*冲出场外判为输*/ if (map[tx][ty]==3) { /*到达终点记录最小步数*/ if (step<ans) ans=step; continue; } else if (map[tx][ty]==1) { /*碰到障碍物则停在障碍物前,并清除障碍物*/ map[tx][ty]=0; dfs(tx-dx[i],ty-dy[i],step+1); map[tx][ty]=1; /* map[tx][ty]=0; tx-=dx[i]; ty-=dy[i]; dfs(tx,ty,step+1); map[tx+dx[i]][ty+dy[i]]=1;←如上情况是,回溯时千万不要忘记把倒退的步骤加回去 */ } } } int main() { while (scanf("%d%d",&row,&line)) { if (row==line && line==0) break; for (int i=0;i<line;i++) for (int j=0;j<row;j++) { scanf("%d",&map[i][j]); if (map[i][j]==2) { sx=i;sy=j; map[i][j]=0; } } ans=INF; dfs(sx,sy,1); if (ans!=INF) cout<<ans<<endl; else cout<<-1<<endl; } return 0; }
相关文章推荐
- HDU 5353 Average 贪心
- 微信红包要收税 到底关我卵事?
- 南邮 OJ 2098 3_A+B(III)
- HDU 1879 继续畅通工程
- 转 wsdl
- UIWebView网页视图—IOS开发
- volatile 关键字
- HDU - 3466 Proud Merchants(不理解)
- kali无法输入中文
- Cent OS下发送邮件
- eclipse如何查看类之间的引用关系
- onfiguration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security]
- 如何生成vfh特征值pcd文件
- 理解Linux的硬连接与软连接
- 南邮 OJ 2097 2_A+B(II)
- shell中截取cut所不能做好的字符串的方法
- Java中字符串为什么不以\0结尾
- Python安装.whl包的一系列问题
- LAMP开发环境的搭建
- leetcode 84: Largest Rectangle in Histogram