CF138A Literature Lesson

先说几句

这个难度不对,我看应该是 普及/提高-。 这是我第一篇题解,如有错误,请及时提出。 希望过审,谢谢!

解题思路

先是两个函数,分别是判断元音字母和诗的形态的。不用多说。 特别注意 judgeType 函数的顺序,千万不能错。

关键在于主函数。 读入数据,不用多说。我用的是二维 string 数组。 其中,第一维表示第几个四行,第二维表示每个四句话中的每一行。

我又新建的 y 数组,结构同上。用于保存每一句话的“韵”,方便之后的判断。 详细的解释看注释。

特别的,substr 函数,第二个参数可以省略不写,不写,就表示取到底。 例如:

则,s.substr(7) 所取出的内容就是 " Luogu "。

接下来,是最关键的部分了。 先对每一个四行绝句判断形态。如果出现不明形态(函数返回 No ),直接结束程序。

最后,建立集合 S 。遍历 a 数组。如果出现 aaaa:

我们知道, aaaa 可以看作 aabb 、abab 、abba。 所以,aaaa 就可以看作“百搭”,不用管它。无论之后出现怎样的形态, aaaa 都可以匹配上。 其余的,都放进集合 S 里。只要集合 S 出现 2 个元素,说明不能统一全诗的形态,就结束程序。

如果没法结束程序:

S为空

就说明都是 aaaa,直接 continue 掉了,以至于没有元素可以放进集合。输出 aaaa 即可。

S有且仅有一个元素

输出那个唯一的形态即可。

注意,iterator 也是可以按照指针处理的,可以用 * 号访问内存中的值。

奉上代码

千万不要抄,小心棕名!


All Rights Reserved 2022 Wang Zhanrui