AT_utpc2011_4.停止問題

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Defunge 程序由一个 RR 行 CC 列的字符数组组成。下面是一个 Defunge 程序的例子:

6>--v.
.^--_@

Defunge 程序从程序的左上角(即第一行第一列)开始执行。它的执行方向一开始为"右",每次朝着执行方向走一步,如果走出界了,要跳到另一边。每走到一个格子上,就要执行这个格子上的命令。 Defunge 程序还有一个存储器,这个存储器只能存储 [0,15][0,15] 的一个整数,存储器一开始存储 0\bold{0}。

在 Defunge 程序中,有且只有 11+10=2111+10=21 种命令,下面是它们各自的含义:

  • <:把执行方向设置为"左"。
  • >:把执行方向设置为"右"。
  • ^:把执行方向设置为"上"。
  • v:把执行方向设置为"下"。
  • _:如果存储器存储的数字是 00,就把执行方向设置为"右",否则设置为"左"。
  • |:如果存储器存储的数字是 00,就把执行方向设置为"下",否则设置为"上"。
  • ?:把执行方向设置为"上下左右"中的任意一个(类似于 dfs 把四个方向全搜一遍)。
  • .:什么也不做。
  • @:停止程序。
  • 0-9:把存储器设置为这个字符表示的数值。
  • +:让存储器的数值加 11。注意当存储器的数值为 1515 时要把它设为 00。
  • -:让存储器的数值减 11。注意当存储器的数值为 00 时要把它设为 1515。

现在,给你一个 Defunge 程序,请判断这个程序是否能停止(即执行到命令@)。如果能,输出YES,否则输出NO。

输入格式

第一行两个正整数 R,CR,C,表示这个 Defunge 程序有 RR 行 CC 列。

接下来 RR 行,每行有 CC 个字符,描述这个 Defunge 程序。

输出格式

一行字符串YES或NO,表示这个程序是否能停止。

【样例】

样例输入 11:

2 6
6>--v.
.^--_@

样例输出 11:

YES

样例输入 22:

2 6
5>--v.
.^--_@

样例输出 22:

NO

样例输入 33:

2 6
.>--v.
.^--?@

样例输出 33:

YES

说明/提示

1≤R,C≤201\leq R,C\leq 20,保证程序里只有上文提到的 2121 种命令。

输入解题思路,AI测评打分。不知道怎么写?

首页