4384---一方通行与最后之作 (sdut oj)
一方通行与最后之作
学园都市仅有的七名超能力者(Level 5)排名第一位,能力为“矢量操作”,代号「一方通行(Accelerator)」。
某天,「最后之作」自己去商场玩耍,很晚还没有回来。「一方通行」很担心于是决定去找最后之作。商场可以大体看作一个 N*M 的矩形,墙壁和遮挡物用 '*' 表示,空白位置用 '.' 表示,一方通行和最后之作的起始位置分别用 'A' 和 'L' 表示。(显然,他们两个人的起始位置是不可能有遮挡物的)两人总共最多进行 K 次移动,每次移动可以用两个字符串 name 和 direction 来表示。如果 name 为"Accelerator",表示本次是「一方通行」移动。如果 name 为"LastOrder",表示本次是「最后之作」移动。direction 可能为"up"或"down"或"left"或"right",分别表示向上、向下、向左、向右移动一个单位长度。 如果本次要移动的位置在商场外或者存在遮挡物,那么将不移动。如果两人中途已经相遇(坐标重合),那么之后的所有移动全部取消。数据保证「一方通行」和「最后之作」会相遇,如果最后是「一方通行」走向「最后之作」请输出"Accelerator",如果是「最后之作」走向「一方通行」请输出"MisakaMisaka"。然后输出两人实际总共移动了多少步。
Input
首先输入两个正整数 N, M表示商场的大小。(2 <= N, M <= 100)
然后输入一个 N 行 M 列的字符矩阵。
下一行输入一个正整数 K,表示两人总共最多进行 K 次移动。 ( 1 <= K <= 100)
接下来 K 行,每行包括两个字符串,分别表示移动的角色和移动的方向。
Output
第一行输出一个字符串。
第二行输出一个正整数,表示两人实际总共移动了多少步相遇。
Sample Input
4 5
A.…
……
…*…
…L
11
Accelerator down
LastOrder left
LastOrder right
LastOrder left
LastOrder left
Accelerator down
Accelerator down
Accelerator down
LastOrder up
LastOrder left
LastOrder left
Sample Output
MisakaMisaka
9
Hint
样例中,两人最终在第四行第一列相遇,最后一次移动是「最后之作」走向「一方通行」。
「一方通行」移动了3步,「最后之作」移动了6步,两人总共移动了9步。
#include<bits/stdc++.h>
using namespace std;
char s1[110];
char s2[110];
int main()
{int n,m,i,j,k,l=0;int x1,y1,x2,y2;char a[110][110];char s1[110];char s2[110];int flag=0;scanf("%d%d",&n,&m);for(i=1; i<=n; i++){for(j=1; j<=m; j++){scanf(" %c",&a[i][j]);if(a[i][j]=='A'){x1=i;y1=j;}if(a[i][j]=='L'){x2=i;y2=j;}}}scanf("%d",&k);while(k--){scanf("%s %s",s1,s2);if((strcmp(s1,"Accelerator")==0)&&flag==0){if((strcmp(s2,"down")==0)&&(a[x1+1][y1]!='*'&&x1+1<=n)){x1+=1;l++;}else if((strcmp(s2,"left")==0)&&(a[x1][y1-1]!='*'&&y1-1>=1)){y1-=1;l++;}else if((strcmp(s2,"right")==0)&&(a[x1][y1+1]!='*'&&y1+1<=m)){y1+=1;l++;}else if((strcmp(s2,"up")==0)&&(a[x1-1][y1]!='*'&&x1-1>=1)){x1-=1;l++;}if(x1==x2&&y1==y2){flag=1;}}else if((strcmp(s1,"LastOrder")==0)&&flag==0){if((strcmp(s2,"down")==0)&&(a[x2+1][y2]!='*'&&x2+1<=n)){x2+=1;l++;}else if((strcmp(s2,"left")==0)&&(a[x2][y2-1]!='*'&&y2-1>=1)){y2-=1;l++;}else if((strcmp(s2,"right")==0)&&(a[x2][y2+1]!='*'&&y2+1<=m)){y2+=1;l++;}else if((strcmp(s2,"up")==0)&&(a[x2-1][y2]!='*'&&x2-1>=1)){x2-=1;l++;}if(x1==x2&&y1==y2){flag=2;}}}if(flag==1)printf("Accelerator\n");if(flag==2)printf("MisakaMisaka\n");printf("%d\n",l);return 0;
}
4384---一方通行与最后之作 (sdut oj)相关推荐
- 喵帕斯之副食店 (sdut oj)
** 喵帕斯之副食店 (sdut oj) ** Problem Description 莲酱又去副食店买吃的去惹.现在莲酱有一些不同面额硬币,和一个非常喜欢的糖果. 但是莲酱不知道自己能够买多少颗糖果 ...
- SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )...
图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...
- SDUT OJ单个字符输入和输出(顺序结构)
SDUT OnlineJudge #include<iostream> #include<string.h> using namespace std; int main() { ...
- SDUT OJ 2976
写在前面: 最近有小学弟问了,刚来的小学弟正在打基础的阶段 于是po出了老同学写的答案^^ 希望小学弟们能在c/c++的世界打出一片天地,算法的大门时刻为你们打开oooooo A Problem De ...
- SDUT OJ 2974
写在前面: 最近有小学弟问了,刚来的小学弟正在打基础的阶段 于是po出了老同学写的答案^^ 希望小学弟们能在c/c++的世界打出一片天地,算法的大门时刻为你们打开oooooo A Problem De ...
- C语言实验——各位数字之和排序 (sdut oj)
C语言实验--各位数字之和排序 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 给定n个正整数,根据各位数字之和从小到大进行 ...
- SDUT OJ 数据结构实验之排序一:一趟快排
数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT OJ[3109] 买买买 背包 dp
好久没做题了,今天来一发. 根据题意,可以推出状态转移方程: dp[cost][weight] = max(dp[cost][weight], dp[cost-s[i].cost][weight-s[ ...
- SDUT OJ 数据结构实验之链表四:有序链表的归并
数据结构实验之链表四:有序链表的归并 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Desc ...
最新文章
- gltf与glb格式转换 gltf-pipeline、binary-gltf-utils
- 性能优化工具 MVC Mini Profiler
- (二十六)、Java数组在内存中如何存放与分配
- Py之PyWapFetion:PyWapFetion的简介、安装、使用方法之详细攻略
- 传递类型为参数的方法
- DVWA--SQL注入
- android 读取assets文件夹下的文件资源
- linux下memcache安装
- Class.forName和ClassLoader
- 详细介绍MySQL/MariaDB的锁
- 企业级实战01_ActiveMQ 下载、安装、运行、实战需求
- linux-进程杀死的操作
- 17_python基础—面向对象-继承
- ios 动画 隐藏tabbar_iOS_自定义转场TabBar的隐藏动画
- java.util.DualPivotQuickSort的实现
- Ext.data.Store 获取Json数据只有一行,而且是最后一行
- [转载] 数组快速排序python_python实现快速排序
- git遇到的错误集锦及解决方法
- spring RedisTemplate 缓存
- Windows server2012r2安装密钥