基于LRU算法统计缺蛋次数
一位考古科学家新发掘了一批恐龙蛋化石,假设有 N 个,编号分别为 1~N,然后打算对它们进行研究。在科学家的实验室里,有两间房间,一间是他的办公室,一间是储物间。开始时所有的恐龙蛋化石都摆放在储物间,然后需要用到哪一个的时候,就把它拿到办公室来。
科学家的办公室有一张办公桌,桌上有 M 个盘子,每个盘子只能摆放一个恐龙蛋化石。科学家在进行研究时,有一个研究编号序列,如 1 2 5 表示先研究 1 号化石,再研究 2 号,再研究 5 号。
研究规则:
- 若要研究的化石已在办公桌上,可直接研究;
- 若不在办公桌上(称为“缺蛋”),需要去储物间取:
- 若办公桌上有空盘子,直接将新化石放入空盘;
- 若无空盘子,需要先淘汰一个最久未使用的化石放回储物间,再放入新化石。
为了减少“缺蛋”次数,采用 LRU(Least Recently Used,最近最少使用)淘汰算法:每次淘汰当前办公桌上最久未被访问的化石。
示例:假设研究序列为 1、2、3、4、1、2、5、1、2、3、4、5,盘子数 M=4,初始为空,采用LRU算法总缺蛋次数为 8 次。
输入描述
第一行是一个正整数 M,表示盘子的个数,其值不超过 100。 第二行是若干个正整数组成的研究编号序列。
输出描述
输出一个正整数,表示“缺蛋”的次数。
输入样例
4
1 2 3 4 1 2 5 1 2 3 4 5
输出样例
8 本题为编程题,提交代码并运行通过测试点后判分。
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析