Boggle Sort
PDF 视图题目描述
你和朋友玩完一晚 Boggle 之后,想把托盘中的 16 个骰子重新整理成按字母非降序排列。
托盘中有 \(16\) 个六面骰子,每个面都写着一个英文字母,其中恰好有一个面写的是 Qu。你不能交换骰子的位置,只能转动骰子。
对一个骰子:
- 当前朝上的面保持不动,代价为
0次转动; - 任意一个当前朝侧面的面转到上方,代价为
1次转动; - 当前朝下的面转到上方,代价为
2次转动。
你需要让 16 个骰子按通常阅读顺序(从左到右、从上到下)看过去时,其朝上的文字按字典序非降序排列,并使总转动次数最少。
比较时忽略大小写;特殊面 Qu 被视为两个字符 Q 后接 U。例如 QuU 是有序的,但 QuT 不是。
如果无法做到,输出 impossible。
输入格式
输入共 6 行:
- 第一行:16 个大写字母,表示 16 个骰子当前朝上的面。
- 接下来的 4 行:每行 16 个大写字母,表示 16 个骰子当前朝向侧面的 4 个面。
- 最后一行:16 个大写字母,表示 16 个骰子当前朝下的面。
其中:
- 第 \(i\) 个字符对应第 \(i\) 个骰子,\(1 \le i \le 16\);
- 所有字符均为
A-Z; - 字符
Q表示面Qu,且在整个输入中恰好出现一次; - 在同一个骰子上,不会有某个字母出现 4 次或以上。
输出格式
如果可以通过转动使 16 个朝上的面按字典序非降序排列,输出最少转动次数。
否则输出:
impossible
样例输入 1
IAZEEOXSPACKYIGF
APDSSAOHEQAOGGLY
LCERNRFILJINEEWE
BDVLOMRESBATLTRI
TEAAWSINUOOUKVIH
YMNCDHBPTMTDUNUE
样例输出 1
15
样例输入 2
EXFETDMNMGDBRSRM
TIEGINOVRETACNUA
PRYKASAEATNTSHID
SOHUOEJDHVKYLPLC
UFIYAWBZONUIEIWE
LBELCOQASIOLAEGP
样例输出 2
impossible
评论