P13053 [GCJ 2020 #1A] Pattern Matching
题目描述
许多终端使用星号(`*`)表示"任意字符串",包括空字符串。例如,当列出匹配`BASH*`的文件时,终端可能显示 BASH、BASHER 和 BASHFUL。对于`*FUL`,可能显示 BEAUTIFUL、AWFUL 和 BASHFUL。当列出`B*L`时,可能显示 BASHFUL、BEAUTIFUL 和 BULL。
在本题中,**模式**是仅由大写字母和星号(`*`)组成的字符串,**名称**是仅由大写字母组成的字符串。若模式 $p$ 能通过将每个星号替换为任意字符串(可为空)得到名称 $m$,则称 $p$ 匹配 $m$。注意不同星号可被替换为不同字符串。
给定 $\mathrm{N}$ 个模式,请构造一个长度不超过 $10^{4}$ 的字符串,使其同时匹配所有给定模式;若不存在这样的字符串,则报告无解。
输入格式
输入第一行包含测试用例数 $\mathrm{T}$。随后每个测试用例包含:
- 第一行:整数 $\mathrm{N}$ 表示模式数量
- 随后 $\mathrm{N}$ 行:每行一个字符串 $\mathrm{P}_{\mathrm{i}}$ 表示第 $\mathrm{i}$ 个模式
输出格式
对于每个测试用例,输出一行 `Case #x: y`,其中:
- $x$ 为测试用例编号(从 1 开始)
- $y$ 为满足条件的长度不超过 $10^{4}$ 的字符串,若无解则输出 `*`
说明/提示
样例 #1 中,其他可行解包括 COCOCONUTS 和 ILIKECOCONUTS,但 COCONUTSAREGREAT 和 COCOANUTS 不符合要求。注意同一模式可能在测试用例中重复出现。
样例 #2 无解,故输出 `*`。
以下情况不会出现在测试集 1,但可能出现在测试集 2 或 3:
```
4
H*O
HELLO*
*HELLO
HE*
```
可行解包括 HELLO 和 HELLOGOODBYEHELLO,但 OTHELLO 和 HELLOO 不符合。
```
2
CO*DE
J*AM
```
无解,输出 `*`。
```
2
CODE*
*JAM
```
CODEJAM 是可行解之一。
以下情况仅可能出现在测试集 3:
```
2
A*C*E
*B*D*
```
可行解包括 ABCDE 和 ABUNDANCE,但 BOLDFACE 不符合。
```
2
A*C*E
*B*D
```
无解,输出 `*`。
**数据范围**
- $1 \leqslant \mathrm{T} \leqslant 100$
- $2 \leqslant \mathrm{N} \leqslant 50$
- $2 \leqslant \mathrm{P}_{\mathrm{i}}$ 长度 $\leqslant 100$
- 每个 $\mathrm{P}_{\mathrm{i}}$ 仅含大写字母和星号
- 每个 $\mathrm{P}_{\mathrm{i}}$ 至少包含一个大写字母
**测试集 1(5 分,可见判果)**
- 每个 $\mathrm{P}_{\mathrm{i}}$ 仅含一个星号
- 星号必须位于模式开头
**测试集 2(5 分,可见判果)**
- 每个 $\mathrm{P}_{\mathrm{i}}$ 仅含一个星号
**测试集 3(18 分,可见判果)**
- 每个 $\mathrm{P}_{\mathrm{i}}$ 至少含一个星号
翻译由 DeepSeek V3 完成