A计划

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 26   Accepted Submission(s) : 2

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。 现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。

Input

输入的第一行C表示共有C个测试数据,每个测试数据的前一行有三个整数N,M,T。 N,M迷宫的大小N*M(1 <= N,M <=10)。T如上所意。接下去的前N*M表示迷宫的第一层的布置情况,后N*M表示迷宫第二层的布置情况。

Output

如果骑士们能够在T时刻能找到公主就输出“YES”,否则输出“NO”。

Sample Input

1
5 5 14
S*#*.
.#...
.....
****.
...#. ..*.P
#.*..
***..
...*.
*.#..

Sample Output

YES

Source

公主被绑架了,你有迷宫的地图,该迷宫只有两层楼#表示楼梯,.表示空地,*表示墙,第一行输入N,M,K,表示需要输入两个N*M的矩阵地图,起始点为S,公主的位置为P,问你能否在限定的K步之内,找到公主。如果能的话输出YES,否则输出NO.

HDU 2007-6 Programming Contest

 #include <stdio.h>
#include <stdlib.h>
int Len_X,Len_Y,D,SIGN;
char Map[][][];
int DFS(int x,int y,int z,int d,int D)
{
int ii,jj;
if(SIGN==)return ;
if(x>=Len_X||x<||y>=Len_Y||y<||d>D)return ;
if(d<=D&&Map[x][y][z]=='P'){SIGN=;return ;}
if(Map[x][y][z]=='#')
{
if(z==&&(Map[x][y][]!='*'&&Map[x][y][]!='#'))
{
DFS(x,y,,d,D);Map[x][y][]='.';return ;
}
else if(z==&&(Map[x][y][]!='*'&&Map[x][y][]!='#'))
{
DFS(x,y,,d,D);Map[x][y][]='.';return ;
}
else return ;
}
if(d>=D)return ;
if(Map[x][y][z]=='*')return ;
else Map[x][y][z]='*';
/* getch();
putchar('\n');
printf("\tStyp: %d\n",d);
for(ii=0;ii<Len_X;ii++)
{
if(z==1)putchar('\t');
for(jj=0;jj<Len_Y;jj++)
{
printf("%c",Map[ii][jj][z]);
}
putchar('\n');
}*/
if(x+<Len_X&&Map[x+][y][z]!='*')
{
DFS(x+,y,z,d+,D);
if(Map[x+][y][z]!='#')
Map[x+][y][z]='.';
}
if(x->=&&Map[x-][y][z]!='*')
{
DFS(x-,y,z,d+,D);
if(Map[x-][y][z]!='#')
Map[x-][y][z]='.';
}
if(y+<Len_Y&&Map[x][y+][z]!='*')
{
DFS(x,y+,z,d+,D);
if(Map[x][y+][z]!='#')
Map[x][y+][z]='.';
}
if(y->=&&Map[x][y-][z]!='*')
{
DFS(x,y-,z,d+,D);
if(Map[x][y-][z]!='#')
Map[x][y-][z]='.';
}
return ;
} int main()
{
int Begin_x,Begin_y,Begin_z,i,j,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&Len_X,&Len_Y,&D);
getchar();
for(i=;i<Len_X;i++)
{
for(j=;j<Len_Y;j++)
{
scanf("%c",&Map[i][j][]);
if(Map[i][j][]=='S')
{Begin_x=i;Begin_y=j;Begin_z=;}
}
getchar();
}
getchar();
for(i=;i<Len_X;i++)
{
for(j=;j<Len_Y;j++)
{
scanf("%c",&Map[i][j][]);
if(Map[i][j][]=='S')
{Begin_x=i;Begin_y=j;Begin_z=;}
}
getchar();
}
SIGN=;
DFS(Begin_x,Begin_y,Begin_z,,D);
if(SIGN==)
printf("YES\n");
else
printf("NO\n");
}
return ;
}

修改:2015.5.8

 #include <stdio.h>
#include <stdlib.h>
int Len_X,Len_Y,D,SIGN;
int Begin_x,Begin_y,Begin_z;
char Map[][][];
void DFS(int x,int y,int z,int d,int D)
{
// printf("\t%d %d %d\n",x,y,z);
if(SIGN==)return ;
if(d>D)return ;
if(Map[x][y][z]=='*')return;
if(d<=D&&Map[x][y][z]=='P'){SIGN=;return ;}
if(Map[x][y][z]=='#')
{
Map[x][y][z]='*';
if(z==)DFS(x,y,,d,D);
else DFS(x,y,,d,D);
Map[x][y][z]='#';
}
else if(Map[x][y][z]=='.')
{
Map[x][y][z]='*';
DFS(x-,y,z,d+,D);
DFS(x+,y,z,d+,D);
DFS(x,y-,z,d+,D);
DFS(x,y+,z,d+,D);
Map[x][y][z]='.';/*和步数有关,需要点还原*/
}
return ;
}
void Input(int z)/*输入地图*/
{
int i,j;
for(i=;i<=Len_X+;i++)
{
for(j=;j<=Len_Y+;j++)
{
if(i==||j==||i==Len_X+||j==Len_Y+){Map[i][j][z]='*';}
else
{
scanf(" %c",&Map[i][j][z]);
if(Map[i][j][]=='S')
{
Map[i][j][]='.';
Begin_x=i;Begin_y=j;Begin_z=;
}
}
}
}
return ;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&Len_X,&Len_Y,&D);
Input();Input(); SIGN=;
DFS(Begin_x,Begin_y,Begin_z,,D);
if(SIGN==) printf("YES\n");
else printf("NO\n");
}
return ;
}

A计划的更多相关文章

  1. 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划

    发个通知,过段时间学习计划相关的东西就出来了,上次写了篇指引文章后有些好奇心颇重的人跟我说:“发现最近群知识库和技能库更新的频率有点大,这是要放大招的节奏啊!” 很多想学习却不知道如何规划的人想要一个 ...

  2. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)

    前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...

  3. ORACLE从共享池删除指定SQL的执行计划

    Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划 ...

  4. 解析大型.NET ERP系统核心组件 查询设计器 报表设计器 窗体设计器 工作流设计器 任务计划设计器

    企业管理软件包含一些公共的组件,这些基础的组件在每个新项目立项阶段就必须考虑.核心的稳定不变功能,方便系统开发与维护,也为系统二次开发提供了诸多便利.比如通用权限管理系统,通用附件管理,通用查询等组件 ...

  5. MSSQLSERVER执行计划详解

    序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...

  6. SQL Server-聚焦使用索引和查询执行计划(五)

    前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the ...

  7. SQL Tuning 基础概述03 - 使用sql_trace和10046事件跟踪执行计划

    1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session ...

  8. SELECT TOP 1 比不加TOP 1 慢的原因分析以及SELECT TOP 1语句执行计划预估原理

    本文出处:http://www.cnblogs.com/wy123/p/6082338.html 现实中遇到过到这么一种情况: 在某些特殊场景下:进行查询的时候,加了TOP 1比不加TOP 1要慢(而 ...

  9. SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)

    本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. ...

  10. ASP.NET Core官方计划路线及需要废除的一些Framework技术

    概述 下面是 ASP.NET Core的时间表和路线图. 注意日期和特性都可能更改. 作为.NET Core这么大的一个项目,很难准确预测每一个计划的是否有变动. 即便如此,我们还是计划公开和透明的实 ...

随机推荐

  1. 代码块(Block)回调一般阐述

    本章教程主要对代码块回调模式进行讲解,已经分析其他回调的各种优缺点和适合的使用场景. 代码块机制 Block变量类型 Block代码封装及调用 Block变量对普通变量作用域的影响 Block回调接口 ...

  2. 在cmd中设置字体

    1.首先在cmd中输入chcp 65001 回车(通过 chcp命令改变代码页,UTF-8的代码页为65001) 2.右击命令提示符的标题栏点击属性. 3.在属性中选择字体后点击确认即可.

  3. 二十七、oracle 例外

    一.例外分类oracle将例外分为预定义例外.非预定义例外和自定义例外三种.1).预定义例外用于处理常见的oracle错误.2).非预定义例外用于处理预定义例外不能处理的例外.3).自定义例外用于处理 ...

  4. cuckoo相关

    Q1:pefile is out of date 现象:ERROR: Your version of pefile is out of date.  Please update to the late ...

  5. How to solve java.net.SocketTimeoutException:60000millis problem in HDFS

    Many HDFS users encounter the following error when DFSClient ready file from a certain Data Node.  & ...

  6. 鼠标点击 input,显示瞬间的边框颜色,对之修改与隐藏

    示例的是项目中的遇到的,要做成的效果是点击该图片按钮,达到切换图片的效果: HTML代码如下: <input class="dBox3Ulimg" type="im ...

  7. Gentoo本地化设置--时区、时钟、字体、中文环境

    时区 你需要选择时区让系统知道你的地理位置,以保持正确的时间.在/usr/share/zoneinfo中查找你的时区.然后在/etc/conf.d/clock中设置时区.请忽略/usr/share/z ...

  8. chapter8_3 c代码和错误

    1.C代码 Lua提供的所有关于动态链接的功能都集中在一个函数中,即package.loadlib. 该函数有两个字符串参数:动态库的完整路径和一个函数名称: local path = "/ ...

  9. 第二次冲刺spring会议(第五次会议)

    [例会时间]2014/5/8 21:15 [例会地点]9#446 [例会形式]轮流发言 [例会主持]马翔 [例会记录]兰梦 小组成员:兰梦 ,马翔,李金吉,赵天,胡佳奇

  10. 将数据库的数据导入solr索引库中

    在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例. 首先要准备jar包:solr-dataimporthandler-4.8.1.jar.solr-dataimport ...