POJ3009 Curling 2.0
来源:互联网 发布:linux重启网络服务失败 编辑:程序博客网 时间:2024/05/16 18:19
dfs,,可是明知道是dfs还是不会做=-=。。。。
题目大意,,在一张板上,从s处开始击球,方向仅限于上下左右,球只要撞击到墙壁(用1表示)球就会静止下来,同时墙壁会碎掉,变为0(用0表示空),求问经过最少几次击球能到达g(目标)。
击球的时候要注意几点:
1.球只会撞到墙或到达g点会停下来;
2.不能向边上有墙壁的方向击球;
题目意思是不是挺简单的呀?可就是做不出,还是看了题解才有思路,出处点击打开链接
#include <iostream>#include <stdio.h>#define inf 0x3f3f3f3f#define M 1008using namespace std;int map[M][M];int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}};int w,h;bool flag=false;int min_step;void dfs(int x,int y,int step){ if(step>=10) return ; int xx,yy; for(int i=0;i<4;i++) { xx=x+dir[i][0]; yy=y+dir[i][1]; if(xx<1||xx>h||yy<1||yy>w) continue ; if(map[xx][yy]==1) continue ; while(map[xx][yy]!=1&&map[xx][yy]!=3) { xx+=dir[i][0]; yy+=dir[i][1]; if(xx<1||xx>h||yy<1||yy>w) break; } if(xx<1||xx>h||yy<1||yy>w) continue ; if(map[xx][yy]==3) { min_step=min(min_step,step+1); return ; } else { map[xx][yy]=0; dfs(xx-dir[i][0],yy-dir[i][1],step+1); map[xx][yy]=1; } }}int main(){ freopen("in.txt","r",stdin);while(scanf("%d%d",&w,&h),w){ min_step=inf; int sx,sy,gx,gy; for(int i=1;i<=h;i++) { for(int j=1;j<=w;j++) { scanf("%d",&map[i][j]); if(map[i][j]==2) { sx=i; sy=j; } else if(map[i][j]==3) { gx=i; gy=j; } } } dfs(sx,sy,0); if(min_step != inf) { printf("%d\n", min_step); } else printf("-1\n");} return 0;}
不过掌握了一点技巧了,就是如何在dfs里面求最小值,
就是下面的这些代码
if(map[xx][yy]==3) { min_step=min(min_step,step+1); return ; }
是不是很方便呀
其实还有一点我想说在循环方面我连while都忘记了。。。=-=
就是这几点了。。
0 0
- POJ3009:Curling 2.0(DFS)
- POJ3009--Curling 2.0
- poj3009 Curling 2.0
- poj3009 Curling 2.0---bfs
- poj3009 Curling 2.0
- poj3009 Curling 2.0
- POJ3009 Curling 2.0(DFS)
- POJ3009 Curling 2.0
- POJ3009---Curling 2.0
- POJ3009 Curling 2.0
- POJ3009 Curling 2.0 DFS
- POJ3009 Curling 2.0【DFS】
- poj3009 Curling 2.0
- POJ3009 Curling 2.0(DFS)
- POJ3009-Curling 2.0
- POJ3009 Curling 2.0
- POJ3009-Curling 2.0
- poj3009 Curling 2.0
- Uiautomator Api浅析
- 安卓系统下的多线程断点下载实现
- CentOS Linux下配置Oracle 11gR2为系统服务自动启动
- android CTS命令
- 2015年第二周项目二:长方柱类
- POJ3009 Curling 2.0
- ubuntu14.04 ssh 和 图形界面root登入
- 在 Linux 如何更改文本文件的字符编码
- csdn编程练习之高斯公式
- 数据库三范式
- java数组
- 夏俊:深入网站服务端技术(一)——网站并发的问题
- 信息推荐系统学习笔记之概述
- html - div样式 margin:0 auto 在IE8浏览器不居中的解决办法