AT_arc003_2 [ARC003B] さかさま辞書
题目描述
高桥君决定和朋友们玩“逆向接龙”游戏。
“逆向接龙”是一种接龙游戏,要求用前一个人所说单词的首字母作为下一个单词的尾字母。
然而,高桥君对自己的英文单词不太自信,于是偷偷使用了“逆向字典”。
普通字典是按照单词首字母的字母顺序排列的,如果首字母相同,则比较下一个字母,以此类推。
与之相对,“逆向字典”是从单词的末尾字母开始比较的。
例如,apple、bee、card 按照普通字典顺序排列为 apple → bee → card。
但在“逆向字典”中,以 d 结尾的 card 排在第 $1$ 位,apple 和 bee 都以 e 结尾,因此比较倒数第二个字母,bee 的倒数第二个字母是 e,apple 的倒数第二个字母是 l,所以 bee 排在第 $2$ 位,apple 排在第 $3$ 位。

图(a):普通字典顺序排列示例
图(b):逆向字典顺序排列示例
请你帮高桥君制作一个“逆向字典”,并将给定的单词按照“逆向字典”顺序排列。输入格式如下,从标准输入读入。
> $N$
> $s_1$
> $s_2$
> $\vdots$
> $s_N$
- 第 $1$ 行是一个整数 $N\ (1\leq N\leq 100)$,表示需要排列的单词数量。
- 第 $2$ 行到第 $N+1$ 行,每行一个字符串,表示需要排列的单词 $s_i$。
- 每个单词的长度在 $1$ 到 $20$ 之间,且只包含小写英文字母(`a`-`z`)。
- 输入中不会有重复的单词。
请将输入的单词按照逆向字典顺序,每行输出一个单词,最后输出一个换行符。
例如:
```
5
chokudai
kensho
imos
yuichirw
ao
```
输出为:
```
chokudai
ao
kensho
imos
yuichirw
```
- 首先,比较每个单词的最后一个字母,分别为 chokudai、kensho、imos、yuichirw、ao 的 i、o、s、w、o,按字母顺序排列为 i、o、o、s、w。
- 由于 kensho 和 ao 的最后一个字母相同(o),需要比较倒数第二个字母。
- kensho 的倒数第二个字母是 h,ao 的倒数第二个字母是 a,a 在 h 之前,所以 ao 排在 kensho 前面。
- 因此,最终顺序为 chokudai、ao、kensho、imos、yuichirw。
再如:
```
2
dart
art
```
输出为:
```
art
dart
```
- 两个单词从末尾依次比较,每一位都相同,直到 art 已经没有更多字母可比,此时 art 应排在 dart 前面。
输入格式
第 $1$ 行包含一个整数 $N$,表示单词数量。
接下来的 $N$ 行,每行一个字符串 $s_i$,表示需要排列的单词。
输出格式
按逆向字典顺序,每行输出一个单词。最后输出一个换行符。
说明/提示
- 单词数量 $1 \leq N \leq 100$。
- 每个单词长度 $1 \leq |s_i| \leq 20$。
- 单词仅包含小写英文字母。
- 输入中不会有重复单词。
由 ChatGPT 4.1 翻译