#5203. Word Ladder

0

Word Ladder

Word Ladder

题目描述

你得到两个由小写英文字母组成的字符串 SS 和 TT。这里,SS 和 TT 的长度相等。 令 XX 为一个空数组,重复以下操作直到 SS 等于 TT:

改变 SS 中的一个字符,并将 SS 附加到 XX 的末尾。

找到以这种方式得到的具有最少元素个数的字符串数组 XX。如果存在多个具有最小元素个数的数组,请在它们中找到字典序最小的一个。

什么是字符串数组的字典序? 一个长度为 $N$ 的字符串 $S = S_1 S_2 \ldots S_N$ 当且仅当存在整数 $1 \leq i \leq N$ 满足以下两项时,被称为在字典序上小于字符串 $T = T_1 T_2 \ldots T_N$:

S1S2…Si−1=T1T2…Ti−1S_1 S_2 \ldots S_{i-1} = T_1 T_2 \ldots T_{i-1} SiS_i 在字母表中出现在 TiT_i 之前。

一个有 MM 个元素的字符串数组 X=(X1,X2,…,XM)X = (X_1,X_2,\ldots,X_M) 在字典序上小于另一个有 MM 个元素的字符串数组 Y=(Y1,Y2,…,YM)Y = (Y_1,Y_2,\ldots,Y_M) 当且仅当存在整数 1≤j≤M1 \leq j \leq M 满足以下两项:

$(X_1,X_2,\ldots,X_{j-1}) = (Y_1,Y_2,\ldots,Y_{j-1})$ XjX_j 在字典序上小于 YjY_j。

输入格式

输入从标准输入给出,格式如下: SS TT

输出格式

令 MM 为所需数组的元素个数。输出 M+1M + 1 行。 第一行应包含值 MM。 第 i+1i + 1 行 (1≤i≤M)(1 \leq i \leq M) 应包含数组的第 ii 个元素。

adbe
bcbc
3
acbe
acbc
bcbc
abcde
abcde
0
afwgebrw
oarbrenq
8
aawgebrw
aargebrw
aarbebrw
aarbebnw
aarbebnq
aarbeenq
aarbrenq
oarbrenq

提示

SS 和 TT 是由小写英文字母组成的字符串,长度在 11 到 100100(含)之间。 SS 和 TT 的长度相等。最初,S=S = adbeadbe。 我们可以通过执行以下操作得到 X=(X = ( acbeacbe ,, acbcacbc ,, bcbcbcbc )):

将 SS 变为 acbeacbe 并将 acbeacbe 附加到 XX 的末尾。

将 SS 变为 acbcacbc 并将 acbcacbc 附加到 XX 的末尾。

将 SS 变为 bcbcbcbc 并将 bcbcbcbc 附加到 XX 的末尾。

标签: AtCoder|abc370C

来源

AtCoder|abc370C