hduoj---Tempter of the Bone
Tempter of the Bone
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 55812 Accepted Submission(s): 15052
The maze was a rectangle with sizes N by M. There was a door in the maze. At the beginning, the door was closed and it would open at the T-th second for a short period of time (less than 1 second). Therefore the doggie had to arrive at the door on exactly the T-th second. In every second, he could move one block to one of the upper, lower, left and right neighboring blocks. Once he entered a block, the ground of this block would start to sink and disappear in the next second. He could not stay at one block for more than one second, nor could he move into a visited block. Can the poor doggie survive? Please help him.
'X': a block of wall, which the doggie cannot enter; 'S': the start point of the doggie; 'D': the Door; or '.': an empty block.
The input is terminated with three 0's. This test case is not to be processed.
S.X.
..X.
..XD
....
3 4 5
S.X.
..X.
...D
0 0 0
YES
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- int n,m,ex,ey,t;
- bool success;
- char maze[][]; //考虑到要加边
- /*
- stx ---->开始x坐标
- sty ---->开始y坐标
- dt ---->花掉时间
- */
- void dfs(int stx,int sty,int dt )
- {
- /*
- 超过规定时间,超边都表示无法完成任务
- */
- if(stx<=||stx>n||sty<=||sty>m) /* 可以加边处理的*/
- return ;
- if(stx==ex&&sty==ey&&dt==t)
- success=true;
- if(success) return ;
- int temp=(t-dt)-abs(ex-stx)-abs(ey-sty);
- if(temp<||temp&) //奇偶剪枝
- return ;
- /*
- 0 1 0 1 0 1 0 1 0
- 1 0 1 0 1 0 1 0 1
- 0 1 0 1 0 1 0 1 0
- 1 0 1 0 1 0 1 0 1
- 0 1 0 1 0 1 0 1 0
- 1 0 1 0 1 0 1 0 1
- 0 1 0 1 0 1 0 1 0
- 1 0 1 0 1 0 1 0 1
- 无论是从o 开始还是从1开始,
- 都是 0--->1 或者1--->0 都是奇数步
- 0-->0 , 1--->1 都是偶数步
- */
- //然后是对上下左右的搜索
- if(maze[stx][sty+]!='X') //向右搜索
- {
- maze[stx][sty+]='X'; //见进入口堵上
- dfs(stx,sty+,dt+);
- maze[stx][sty+]='.';
- }
- if(maze[stx+][sty]!='X') //向下搜索
- {
- maze[stx+][sty]='X'; //见进入口堵上
- dfs(stx+,sty,dt+);
- maze[stx+][sty]='.';
- }
- if(maze[stx][sty-]!='X') //向左搜索
- {
- maze[stx][sty-]='X'; //见进入口堵上
- dfs(stx,sty-,dt+);
- maze[stx][sty-]='.';
- }
- if(maze[stx-][sty]!='X') //向上搜索
- {
- maze[stx-][sty]='X'; //见进入口堵上
- dfs(stx-,sty,dt+);
- maze[stx-][sty]='.';
- }
- return ;
- }
- int main()
- {
- int stx,sty,wall;
- while(scanf("%d%d%d",&n,&m,&t),n+m+t)
- {
- getchar();
- wall=; //统计障碍物的个数 每次输入清零
- for(int i=;i<=n;i++)
- {
- for(int j=;j<=m;j++)
- {
- scanf("%c",&maze[i][j]);
- if(maze[i][j]=='S')
- {
- stx=i; // 标注开始的x轴的位置
- sty=j; // 标注开始的y轴的位置
- }
- else
- if(maze[i][j]=='D')
- {
- ex=i; // 标注结束的x轴的位置
- ey=j; // 标注结束的y轴的位置
- }
- else if(maze[i][j]=='X')
- {
- wall++;
- }
- }
- getchar();
- }
- success=false;
- maze[stx][sty]='X'; //堵住入口
- if( n*m-wall<=t ) //因为只有在t时刻door 才打开
- printf("NO\n");
- else
- {
- dfs(stx,sty,);
- if(success)
- printf("YES\n");
- else
- printf("NO\n");
- }
- }
- return ;
- }
hduoj---Tempter of the Bone的更多相关文章
- hdu.1010.Tempter of the Bone(dfs+奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- ZOJ 2110 Tempter of the Bone
Tempter of the Bone Time Limit: 2 Seconds Memory Limit: 65536 KB The doggie found a bone in an ...
- hdu 1010:Tempter of the Bone(DFS + 奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- HDU 1010 Tempter of the Bone --- DFS
HDU 1010 题目大意:给定你起点S,和终点D,X为墙不可走,问你是否能在 T 时刻恰好到达终点D. 参考: 奇偶剪枝 奇偶剪枝简单解释: 在一个只能往X.Y方向走的方格上,从起点到终点的最短步数 ...
- Hdu 1010 Tempter of the Bone 分类: Translation Mode 2014-08-04 16:11 82人阅读 评论(0) 收藏
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdoj 1010 Tempter of the Bone【dfs查找能否在规定步数时从起点到达终点】【奇偶剪枝】
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Tempter of the Bone(dfs+奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu 1010 Tempter of the Bone 深搜+剪枝
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Tempter of the Bone(dfs奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- ZOJ 2110 Tempter of the Bone(条件迷宫DFS,HDU1010)
题意 一仅仅狗要逃离迷宫 能够往上下左右4个方向走 每走一步耗时1s 每一个格子仅仅能走一次且迷宫的门仅仅在t时刻打开一次 问狗是否有可能逃离这个迷宫 直接DFS 直道找到满足条件的路径 ...
随机推荐
- Mysql中与时间相关的统计分析
最近项目需要统计一段日期范围内,根据每分钟.几分钟.每天分别统计汇总某些事件/指标的发生总次数,平均发生次数,因此总结了Mysql中与时间处理.统计相关的资料. 按分钟统计某一时间段内的数据 SELE ...
- xp局域网共享设置
xp在局域网内的每一台机子做以下一些设置:1.启用Guest(来宾)帐户:控制面板--用户帐户或者在管理工具--计算机管理--本地用户和组--右键Guest属性--去掉帐户已停用 前的勾.2.允许Gu ...
- Steps to configure a FileShare Quorum Witness for Windows Failover Cluster
Step 1: Step 2: Step 3: Step 4: You must use the wizard to create the file share. Step 5: to make su ...
- vue-router路由知识补充
1.render函数 var app = new Vue({ el: '#app', router, render: h => h(App) //新添加的函数操作 }) 我们新加了render: ...
- Java基础(四):Java Number & Math 类、Character 类、String 类、StringBuffer & StringBuilder 类
一.Java Number & Math 类: 1.Number类: 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double 等.然而,在实际开发 ...
- IOS之导航控制器
UINavigationController是用于构建分层应用程序的主要工具,主要采用栈形式来实现视图.任何类型的视图控制器都可放入栈中.在设计导航控制器时需要指定根视图即用户看到的第一个视图.根视图 ...
- 转载|23个Python爬虫开源项目代码:爬取微信、淘宝、豆瓣、知乎、微博等
地址:https://ask.julyedu.com/article/323
- linux用户管理中两个重要的“父子”配置文件
在Linux中主要通过用户配置文件来查看和修改用户信息,因此下面我们将介绍两个重要的用户配置文件,让你能够更好的hold住你的用户. 一:父文件/etc/passwd 1.查看配置文件/etc/pas ...
- (转)Unity3D新手引导开发手记
转自:http://www.cnblogs.com/ybgame/p/3844315.html 最近开始接手新手引导的开发,记录下这块相关的心得 首先客户端是Unity,在接手前,前面的同学已经初步完 ...
- 字符串HASH 学习总结 && 模板
一.字符串HASH模板 取自挑战程序设计竞赛(第2版) </pre><pre code_snippet_id="446698" snippet_file_nam ...