PS:以前看到题目这么长就没写下去了。今天做了半天,没做出来。准备看题解,打开了网站都忍住了,最后还是靠自己做出来的。算是一点进步吧。

分析:

  题目的意思没明白或者理解有偏差都没办法做题。看样例3和样例4,数据差不多的,但是一个输出4,但是另外的一个却是-1。再去看题目就会发现,题目的意思是在撞碎石头之前必须走一个为值0的格子。我理解为需要加速。对样例4,答案4是这样出来的:初始位置为(1,3),第一步是到达(1,2),并且使得(1,1)点的值为0(撞碎了这里的石头,0代表可以通行);第二步是到达(1,3),并且是得(1,4)点的值为0;第三步是到达(1,4),并且使得(1,5)的值为0;第四步是到达(1,5),发现到达了终点,结束。样例5也可以这样得到。

  样例6错误的原因是因为超过了10步,这是题目的要求,超过10步就当不能到达处理。

  这样一来,可以知道了起点和终点的处理了。起点(终点)的坐标记录下来,但是标记为0。

  还有就是实现如何对一个方向进行搜索,以及如何标记在撞石头之前已经走过0的位置(不能是这种情况:起点是0,下一点就撞石头)。这思考一下就可以实现了。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; void DFS(int x,int y,int di);
const int N=,INF=0x3f3f3f3f;
bool vis[N][N];
int r,c,t,ex,ey,sx,sy,mx;
int dx[]={,,,-};
int dy[]={,-,,};
bool isin(int x,int y)
{
return x>=&&x<r&&y>=&&y<c;
}
void DDFS(int a,int b,int x,int y,int d)
{
int i,j;
if(t>) return ;
i=x+a; j=y+b;
if(!isin(i,j)) return ;
if(!vis[i][j])
{
d=;
if(i==ex&&j==ey)
{
mx=min(t,mx);
}
DDFS(a,b,i,j,d);
}
else if(vis[i][j]&&d)
{
vis[i][j]=;
d=;
t++;
DFS(x,y,d);
t--;
vis[i][j]=;
}
}
void DFS(int x,int y,int d)
{ for(int k=;k<;k++)
{
DDFS(dx[k],dy[k],x,y,d);
}
}
int main()
{
//freopen("test.txt","r",stdin);
while(scanf("%d%d",&c,&r)!=EOF&&c)
{
int x;
for(int i=;i<r;i++){
for(int j=;j<c;j++){
scanf("%d",&x);
if(x==)
{
ex=i;ey=j;
vis[i][j]=;
}
else if(x==)
{
sx=i;sy=j;
vis[i][j]=;
}
else vis[i][j]=x;
}
}
t=;
mx=INF;
DFS(sx,sy,);
if(mx==INF) printf("-1\n");
else printf("%d\n",mx);
}
return ;
}

  DFS(x,y,d) : (x,y)是起点的坐标,d是标记是否有经过被标记0的点。1表示经过了,0表示没有。

  DDFS(a,b,x,y,d) :(a,b)是方向向量,表明向什么方向搜索;x,y,d同上。

  通过d的记录就可以知道石头可不可以撞碎。使用(a,b)就可以沿着同一方向一直深入。

poj3009 Curling 2.0 深搜的更多相关文章

  1. POJ-3009 Curling 2.0 (DFS)

    Description On Planet MM-21, after their Olympic games this year, curling is getting popular. But th ...

  2. POJ3009——Curling 2.0(DFS)

    Curling 2.0 DescriptionOn Planet MM-21, after their Olympic games this year, curling is getting popu ...

  3. poj3009 Curling 2.0 (DFS按直线算步骤)

    Curling 2.0 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14563   Accepted: 6080 Desc ...

  4. poj3009 Curling 2.0(很好的题 DFS)

    https://vjudge.net/problem/POJ-3009 做完这道题,感觉自己对dfs的理解应该又深刻了. 1.一般来说最小步数都用bfs求,但是这题因为状态记录很麻烦,所以可以用dfs ...

  5. POJ3009 Curling 2.0

    正式做POJ的第一题,做出来后又看了别人的代码,就又完善了一下,也通过了.参考 http://blog.sina.com.cn/s/blog_4abcd9bc0100phzb.html 改了之后觉得写 ...

  6. POJ3009 Curling 2.0(DFS)

    迷宫问题求最短路. 略有不同的是假设不碰到石头的话会沿着一个方向一直前进,出界就算输了.碰到石头,前方石头会消失,冰壶停在原地. 把这个当作状态的转移. DFS能够求出其最小操作数. #include ...

  7. POJ3009 Curling 2.0(DFS)

    题目链接. 分析: 本题BFS A不了. 00100 00001 01020 00000 00010 00010 00010 00010 00030 对于这样的数据,本来应当是 5 步,但bfs却 4 ...

  8. ACM 海贼王之伟大航路(深搜剪枝)

    "我是要成为海贼王的男人!" 路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿着"唯一的大秘宝"--ONE PIECE).而航程中间,则是各式各样的 ...

  9. nyoj-20-吝啬的国度(深搜)

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 在一个吝啬的国度里有N个城市.这N个城市间仅仅有N-1条路把这个N个城市连接起来.如今,Tom在第S号城市 ...

随机推荐

  1. JavaScript学习笔记之DOM对象

    目录 1.Document 2.Element 3.Attribute 4.Event 1.Document 每个载入浏览器的 HTML 文档都会成为 Document 对象,Document 对象允 ...

  2. 16.copy_to定制组合field解决cross-fields搜索弊端

    主要知识点: 在index的mapping中加copy_to字段的方法 copy_to搜索方法     用most_fields策略,去实现cross-fields搜索,有3大弊端,为了解决这三个弊端 ...

  3. JavaSE 学习笔记之String字符串(十四)

    API:(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源 ...

  4. 洛谷 P2827 BZOJ 4721 UOJ #264 蚯蚓

    题目描述 本题中,我们将用符号表示对c向下取整,例如:. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现在共有n只蚯蚓(n为正整数).每只 ...

  5. 网页title上面添加图片

    1.效果:

  6. kendo grid create

    这种自定义的create中的函数,这个data的行为是在发送到后端之前执行的 //{ // url: "/admgr/AdUserAuthorityAdd", // dataTyp ...

  7. [poj1363]Rails_模拟_栈

    Rails poj-1363 题目大意:判断一个序列是否是1~n的合法出栈序列. 注释:$1\le n\le 10^4$. 想法:开始想到一种想法. 对于一段序列来讲,显然从首元素开始的连续小于尾元素 ...

  8. java中静态资源处理方法

    方案一:激活Tomcat的defaultServlet来处理静态文件 在 web.xml 中添加: <servlet-mapping> <servlet-name>defaul ...

  9. 目标跟踪学习系列十:Struck:Structured Output Tracking with Kernels 代码调试

    本来想看完代码再具体的写的.可是有人问了就先贴出来吧! 代码调试中会遇到的一些的问题. 首先,你没有代码的话能够在这里下载:http://download.csdn.net/detail/u01219 ...

  10. springmvc mybatis 分页插件 pagehelper

    springmvc mybatis 分页插件 pagehelper 下载地址:pagehelper 4.2.1 , jsqlparser 0.9.5 https://github.com/pagehe ...