第三题:继续xxx定律,当n为3时,我们在验证xxx定律的过程中会得到一个序列,3,5,8,4,2,1,将3称为关键数,5,8,4,2称为覆盖数。现在输入n个数字,根据关键数与覆盖数的理论,我们只需要验证其中部分数就可以确定所有数满足xxx定律,输入输入的n个数中的关键数。
Input:第一行,n,第二行n个数,n为0时结束
3
3 8 4
0
这道题目表述有点不太清楚,我的理解是关键数是相对的,关键在有没有其他的数字变化序列包含它(即覆盖),由于被覆盖并没有数值上的大小关系可以参考,但可以基于这样一种考虑,统计处每个数字变化的 xxx序列长度,记录的话开销太大,没有必要,然后按此数值排序(计算可以直接copy第一题的函数),选出最大变化步数的数值作为第一个关键数,然后再次XXX对其变化中的每一个数字 检查在剩余元素中存在与否,存在的话就可以删除(可以考虑dfs的框架,但这里数字的范围未知,直接按值来开数组开销太大,还是要个探查过程),标记比较麻烦,可以考虑 使用set,这样免除了重复值,主要要熟悉 查找函数 和删除函数 一般这些 算法都是基于迭代器的 忘记了还是有一定的规律可循