SP9517 UNLOCK - Unlock the Cellphone
题目描述
现代高科技手机常用解锁图案来进行系统解锁。通常,这种图案是一个 3×3 的点阵。用户通过滑动手指连接这些点来创建自己的解锁图案。具体而言,你可以从任意一个起始点开始,然后滑动到下一个点并触摸它,依次继续。不过,图案中不允许跳跃。例如,从点 1 开始,你可以滑动到点 2、点 4 或点 5,但不能直接滑到点 3、点 7 或点 9。但是,从点 1 滑动到点 6 和点 8 是允许的,因为不算作跳过任何点。此外,如果某个点已经触摸过,也可以跳过它。例如,从路径 1-5-9-6 开始,你可以直接滑到点 4。
这里的手机有一个特殊的点阵,大小为 **n**×**m**。有些点是普通的,你可以触摸这些点,然后滑过它们;有些点是禁止的,你不能触摸或滑动经过它们;还有些点是无效的,你不能触摸但可以滑过。每个点只能触摸一次。目标是计算出经过所有普通点的不同解锁图案的数量。
输入格式
输入由多组测试用例组成。每组测试用例的第一行包含两个整数 **n** 和 **m**(1 ≤ **n**, **m** ≤ 5),表示锁屏的行和列数。接下来的 **n** 行,每行有 **m** 个整数 **K $ _{i,j} $**,表示每个键的类型:**K $ _{i,j} $** = 0 代表普通键,**K $ _{i,j} $** = 1 代表禁止键,**K $ _{i,j} $** = 2 代表无效键。普通键的数量大于零且不超过 16。
输入以 EOF 结束。
输出格式
对于每组测试用例,输出一个整数,表示可行的不同解锁图案数量。
**本翻译由 AI 自动生成**