AT_arc003_2 [ARC003B] さかさま辞書

题目描述

高桥君决定和朋友们玩“逆向接龙”游戏。 “逆向接龙”是一种接龙游戏,要求用前一个人所说单词的首字母作为下一个单词的尾字母。 然而,高桥君对自己的英文单词不太自信,于是偷偷使用了“逆向字典”。 普通字典是按照单词首字母的字母顺序排列的,如果首字母相同,则比较下一个字母,以此类推。 与之相对,“逆向字典”是从单词的末尾字母开始比较的。 例如,apple、bee、card 按照普通字典顺序排列为 apple → bee → card。 但在“逆向字典”中,以 d 结尾的 card 排在第 $1$ 位,apple 和 bee 都以 e 结尾,因此比较倒数第二个字母,bee 的倒数第二个字母是 e,apple 的倒数第二个字母是 l,所以 bee 排在第 $2$ 位,apple 排在第 $3$ 位。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_arc003_2/3b080c0561a840fa2991f0f7f5be6d4cfe660742.png) 图(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 翻译