牛客算法竞赛入门课第二节习题Part2(FBI树~新建 Microsoft Office Word 文档)

FBI树

题意:

输出FBI树的后序遍历序列。

思路:

二叉树一般就是分左右两个子树,然后递归下去,在这个过程中判断一下字母就好了。

题目中要求的是后序遍历,所以对于一个节点,是先输出左子树再输出右子树,最后输出该节点。

补充一下:前序遍历就是对于一个节点,是先输出该节点再输出左子树,最后输出右子树。中序遍历就是对于一个节点,是先输出左子树再输出该节点,最后输出右子树。

代码:

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=43763883&returnHomeType=1&uid=115850812

指纹锁

题意:

当指纹的数值差<=k时,可以看作是相同的指纹。

有三个操作,添加删除和询问。

请对每一个询问操作给出答案。

思路:

用一个set维护就好,但是之前一直不知道怎么维护指纹的数值差<=k的可以看作是相同的指纹,直到看到巨巨题解hhhh.

我们可以用运算符重载来自定义set的排序方式,当两个数之间的差值为k时直接返回flase。正好面对刚学完运算符重载。

新建 Microsoft Office Word 文档

题意:

一看就是cls的题啊哈哈

模拟新建文档和删除文档的操作。

思路:

用set反向模拟一下就好了。

假设n个操作都是添加,那么最多会有n个文档。

我们可以先把n个编号存入set里,对于每一个操作,如果是新建文档的话,输出set里的第一个编号,然后删除即可;如果是删除文档的话,就看set集合里是不是有这个编号,如果没有这个编号,说明这个文档已经被使用过了,删除成功;否则,没用过这个编号,删除失败。

代码:

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=43860634&returnHomeType=1&uid=115850812