CF75B Facetook Priority Wall

先说几句

有点讨厌的模拟。难度应该是 普及-。

解题思路

先输入自己的名字。在输入数量。

注意:因为下面要使用 getline,所以,输入完数量 n 后要 cin.get()

之后,用 getline 输入 n 个字符串。

对于每个字符串,用 vector 动态数组 a 存储每个分离出来的单词。 也可以用 istringstream。

我们知道,a1 是执行的操作。建立 map 以确定人与分数的关系。

1.posted

a3 里的名字有所有格,要把最后两位 's 去掉。

如果 a0 是我,或者 a3 是我,就相对应地计分。

2.commented

和上面情况的处理方法一样。

3.likes

需要注意, like,第二个人名应该是 a2。其余的处理方法不变。

4.排序

排序需要自己写一个自定义排序函数。如果分数相同,比较姓名字典序。否则比较分数大小。

5.有点小问题

如果运行目前的程序,一定输入样例 2 后,没有输出。

怎么回事?因为那两个人一分不得。

所以,我们需要“装模做样”地调用一下两个人名所对应的键值,这样 map 里就会增加人数。详见代码中注释打感叹号的部分。

这么修改过后,需要注意,不要输出自己的信息。

奉上代码

千万不要抄,小心棕名!


All Rights Reserved 2022 Wang Zhanrui