QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 2048 MB 満点: 100

#7921. 横滨现象

統計

你知道“横滨现象”吗?当三名程序员围坐在一张桌子旁,共同将一支笔悬在棋盘上方时,这种现象就会发生。棋盘上画着一个方格网,每个方格都标有一个字母。尽管参与者并没有刻意移动笔,但笔尖仿佛有了自己的意志,落在了其中一个标有 Y 的方格上,然后开始在棋盘上移动。经过的方格依次标有 O、K、O、H、A 和 M,最后笔尖停在标有 A 的方格上。

我们将笔尖移动轨迹所经过的方格序列称为“YOKOHAMA 轨迹”。YOKOHAMA 轨迹定义如下:

  • 它是由给定方格网中的八个方格组成的序列。
  • 序列中的每个方格(第一个除外)都与其序列中的前一个方格共边(即边相邻)。
  • 序列中八个方格所标的字母依次为 Y、O、K、O、H、A、M 和 A。

注意,同一个方格可以在序列中出现多次。

图 A.1 (a) 是对应样例输入 1 的棋盘示意图。图 A.1 (b) 和 (c) 展示了两种 YOKOHAMA 轨迹。两条轨迹都从上排最左侧的方格开始。在图 A.1 (c) 所示的轨迹中,标有 O 的同一个方格出现了两次。

图 A.1. 一个棋盘以及两条 YOKOHAMA 轨迹

给定一个方格网,每个方格标有 A、H、K、M、O 或 Y 这六个字母之一。你的任务是计算在该棋盘上可能存在多少种不同的 YOKOHAMA 轨迹。

输入格式

输入包含单个测试用例,格式如下:

$n$ $m$ $x_{1,1} \dots x_{1,m}$ $\vdots$ $x_{n,1} \dots x_{n,m}$

前两个整数 $n$ 和 $m$ ($1 \le n \le 10, 1 \le m \le 10$) 描述了网格的大小。网格由 $n \times m$ 的矩阵排列而成。接下来的 $n$ 行描述了方格上标记的字母。网格中第 $i$ 行第 $j$ 列的方格 ($1 \le i \le n, 1 \le j \le m$) 标有字母 $x_{i,j}$。每个 $x_{i,j}$ 均为 A、H、K、M、O 或 Y 这六个字母之一。

输出格式

输出一行,包含不同 YOKOHAMA 轨迹的数量。

样例

样例输入 1

2 4
YOHA
OKAM

样例输出 1

8

样例输入 2

3 4
YOKH
OKHA
KHAM

样例输出 2

0

样例输入 3

3 6
MAYOHA
AHOKAM
MAYOHA

样例输出 3

80

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.