【题目描述】所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。 问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。

【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

【输入格式】在第一行中输入进程获得使用权的主存块数量n。 在第二行中输入进程访问页面的次序,各数据之间以空格为间隔。

【输出格式】输出对于给定的n和进程访问页面的次序,输出采用LRU算法时的缺页次数。

【输入样例】3

      1 2 3 4 1 2 5 1 2 3 4 5

【输出样例】7

首先了解一下什么是LRU算法

可以参考这篇博客,里面举的例子非常好:如何实现LRU算法? - murphy_gb

那么这道题,我们应该怎么分析?

代码实现:

queue = []
count = 0
piece = int(input())
process = input()
page = process.split(" ")
for i in page[::]:
if i == '':
page.remove(i)
for i in range(0, len(page)):
queue.append(page[i])
if i == len(page) - 1:
break
if len(queue) == piece:
j = 0
while j in range(0, piece):
if page[i + 1] == queue[j]:
queue.append(queue[j]) # 如果后一个页面与这三个页面中的相同,那么就将这个页面提前
queue.pop(j) # 删除到原来所处的位置
page.pop(i + 1) # 删除,进入下一个页面
j = 0
else:
j += 1
queue.pop(0) # 淘汰页面
count += 1
print(count)

最新文章

  1. hibernate中HQL练习时候一个小小的错误导致语法异常
  2. Android智能指针sp wp详解
  3. [Android Pro] Service (startservice , bindservice , unbindservice, stopService)
  4. Ext通过后台校验字段是否重复
  5. SPRING STS Virgo OSGI 开发一 : bundle 项目的创建
  6. Eclipse对printf()不能输出到控制台的解决方法
  7. 用js实现跳转提示页面
  8. Python经常使用第三方工具、库、骨架
  9. 如何使用linq操作datatable进行分组
  10. Hibernate中遇见的问题
  11. 锁定表头和固定列(Fixed table head and columns)
  12. Derivative of Softmax Loss Function
  13. 关于各种O,DO/BO/DTO/VO/AO/PO
  14. SDUT 3002-素数间隙(素数筛+暴力)
  15. Python datetime获取详细时间
  16. 关于安装VS2010过程中的错误
  17. 【RL系列】MDP与DP问题
  18. java类的定义
  19. 制作smarty模版缓存文件
  20. nrm npm源管理利器

热门文章

  1. WPF优秀组件推荐之Stylet(一)
  2. WPF优秀组件推荐之FreeSpire
  3. CSAPP-Lab01 Data Lab 记录
  4. 《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
  5. tensorflow源码解析之common_runtime拾遗
  6. 2022年官网下安装Studio 3T最全版与官网查阅方法(无需注册下载版)
  7. VUE3 之 列表动画 - 这个系列的教程通俗易懂,适合新手
  8. MATLAB2018a安装
  9. ES学习总结
  10. python写一个数字字典生成器