uva 10452 Marcus
Problem I
Marcus, help!
Input: standard input
Output: standard output
Time Limit: 2 Seconds
"First, the breath of God.
Only the penitent man will pass.
Second, the Word of God,
Only in the footsteps of God will he proceed.
Third, the Path of God,
Only in the leap from the lion's head will he prove his worth."
(taken from the movie "Indiana Jones and the Last Crusade", 1989)
To get to the grail, Indiana Jones needs to pass three challenges. He successfully masters the first one and steps up to the second. A cobblestone path lies before him, each cobble is engraved with a letter. This is the second
challenge, the Word of God, the Name of God. Only the cobbles having one of the letters "IEHOVA" engraved can be stepped on safely, the ones having a different letter will break apart and leave a hole.
Unfortunately, he stumbles and falls into the dust, and the dust comes into his eyes, making it impossible for him to see. So he calls for Marcus Brody and asks Marcus to tell him in which
direction to go to safely reach the other side of the cobblestone path. Because of the dust in his eyes, Indy only can step "forth" to the stone right in front of him or do a side-step to the stone on the "left" or the "right"
side of him. These ("forth", "left", "right") are also the commands Marcus gives to him.
Input
The first line of the input contains a single number indicating the number of test cases that follow.
Each test case starts with a line containing two numbers m and n (2 <= m, n <= 8), the length m and the width n of the cobblestone path. Then follow m lines, each containing n characters ('A' to 'Z', '@',
'#'), the engravement of the respective cobblestone. Indy's starting position is marked with the '@' character in the last line, the destination with the character '#' in the first line of the cobblestone path.
Each of the letters in "IEHOVA" and the characters '@' and '#' appear exactly once in each test case. There will always be exactly one path from Indy's starting position via the stones with the letters "IEHOVA"
engraved on (in that order) to the destination. There will be no other way to safely reach the destination.
Output
For each test case, output a line with the commands Marcus gives to Indy so that Indy safely reaches the other side. Separate two commands by one space character.
Sample Input
2
6 5
PST#T
BTJAS
TYCVM
YEHOF
XIBKU
N@RJB
5 4
JA#X
JVBN
XOHD
DQEM
T@IY
Sample Output
forth forth right right forth forth forth
right forth forth left forth forth right
#include <iostream>
#include <cstdio>
using namespace std;
const int d[3][2]={{0,-1},{-1,0},{0,1}};
const char s[8]={'@','I','E','H','O','V','A','#'};
const char *t[]={"left","forth","right"};
const int maxn=10; char a[maxn][maxn];
bool visited[maxn][maxn];
int n,m,p,q; void input()
{
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
{
getchar();
for(int j=0;j<m;j++)
{
scanf("%c",&a[i][j]);
if(a[i][j]=='@') p=i,q=j;
}
}
} bool judge(int x,int y)
{
if(x>=0 && x<n && y>=0 && y<m) return true;
return false;
} void dfs(int x,int y,int depth)
{
for(int i=0;i<3;i++)
{
int xx=x+d[i][0],yy=y+d[i][1];
if(judge(xx,yy) && a[xx][yy]==s[depth])
{
printf("%s",t[i]);
if(depth<=6) printf(" ");
dfs(xx,yy,depth+1);
}
}
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
input();
dfs(p,q,1);
printf("\n");
}
return 0;
}
uva 10452 Marcus的更多相关文章
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- UVA数学入门训练Round1[6]
UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...
- UVA - 1625 Color Length[序列DP 代价计算技巧]
UVA - 1625 Color Length 白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束 和模拟赛那道环形DP很想,计算这 ...
- UVA - 10375 Choose and divide[唯一分解定理]
UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
- UVA - 11584 Partitioning by Palindromes[序列DP]
UVA - 11584 Partitioning by Palindromes We say a sequence of char- acters is a palindrome if it is t ...
随机推荐
- 如何用SQL语句在指定字段前面插入新的字段?
如何用SQL语句在指定字段前面插入新的字段? 2007-10-17 09:28:00| 分类: 笔记|举报|字号 订阅 create proc addcolumn @tablename va ...
- mysql中删除已有字段的唯一性约束?
username varchar() NOT NULL unique 如何把unique约束删除? 解决方法:在你建好的表...右击 ——索引/索引类型——把username唯一键去掉
- Oracle数据库单表循环提取输出
现在有如下的表,名称为Test表: ydid sws_dm sws_mc ry_dm ry_mc 1 1 ...
- 利用filter过滤去重
var r, ary = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry']; r ...
- KBE_运作流程
图片来自官方手册:Switch Fabric:交换机网络,根据网络环境的不同而不同,根据用户自己的情况进行配置,不属于引擎范畴. 运作流程 Client连接Loginapp通过API连接,如下示例: ...
- java IO流 内容整理
在java中,对数据的输入和输出操作以流的方式进行.(注:对文件的操作用io.File类,但不能对文件中的内容进行操作) 一.IO流的分类: 按数据流的方向不同,可以分为输入流和输出流: 按处理数据的 ...
- JavaScript中整型数据使用
JavaScript中整型数据使用 制作人:全心全意 JavaScript的数字格式允许精确地表示-900719925474092(-253)和900719925474092(253)之间的所有整数, ...
- 12.Spring通过FactoryBean配置Bean
为啥要使用FactoryBean: 在配置Bean的时候,需要用到IOC容器中的其它Bean,这个时候使用FactoryBean配置最合适. public class Car { private St ...
- UvaLive 4863 Balloons(贪心)
题意: 给定n个队伍, 然后A房间有a个气球, B房间有b个气球, 然后给出每个队伍所需要的气球数量和到A B房间的距离, 求把气球全部送到每个队伍的最短距离. 分析: 在气球充足的情况下, 那么我们 ...
- Java反射机制(Reflect)解析-----https://www.cnblogs.com/fzz9/p/7738381.html
Java反射机制(Reflect)解析-----https://www.cnblogs.com/fzz9/p/7738381.html