【題目描述】所謂LRU演算法,是指在發生缺頁並且沒有空閒主存塊時,把最近最少使用的頁面換出主存塊,騰出地方來調入新頁面。
問題描述:一程序獲得n個主存塊的使用權,對於給定的程序訪問頁面次序,問當採用LRU演算法時,輸出發生的缺頁次數。
【練習要求】請給出原始碼程式和執行測試結果,原始碼程式要求新增必要的註釋。
【輸入格式】在第一行中輸入程序獲得使用權的主存塊數量n。
在第二行中輸入程序訪問頁面的次序,各資料之間以空格為間隔。
【輸出格式】輸出對於給定的n和程序訪問頁面的次序,輸出採用LRU演算法時的缺頁次數。
【輸入樣例】3
1 2 3 4 1 2 5 1 2 3 4 5
【輸出樣例】7
import math
# 三維圖形功能介面 class ThreeDimensionalShape: def perimeter(self): pass def area(self): pass def volume(self): pass # 定義點類 class Point: def __init__(self, x, y): self.x = x self.y = y def get_coordinates(self): return self.x, self.y def set_coordinates(self, x, y): self.x = x self.y = y def display(self): print("點座標: ({}, {})".format(self.x, self.y)) # 圓類 class Circle(Point): def __init__(self, x, y, radius): super().__init__(x, y) self.radius = radius def get_radius(self): return self.radius def set_radius(self, radius): self.radius = radius def perimeter(self): return 2 * math.pi * self.radius def area(self): return math.pi * self.radius ** 2 def display(self): super().display() print("半徑: ", self.radius) print("周長: ", self.perimeter()) print("面積: ", self.area()) # 球類 class Sphere(Circle, ThreeDimensionalShape): def __init__(self, x, y, radius): super().__init__(x, y, radius) def volume(self): return (4 / 3) * math.pi * self.radius ** 3 def display(self): super().display() print("體積: ", self.volume()) # 圓柱類 class Cylinder(Circle, ThreeDimensionalShape): def __init__(self, x, y, radius, height): super().__init__(x, y, radius) self.height = height def volume(self): return math.pi * self.radius ** 2 * self.height def display(self): super().display() print("高度: ", self.height) print("體積: ", self.volume()) # 圓錐類 class Cone(Circle, ThreeDimensionalShape): def __init__(self, x, y, radius, height): super().__init__(x, y, radius) self.height = height def volume(self): return (1 / 3) * math.pi * self.radius ** 2 * self.height def display(self): super().display() print("高度: ", self.height) print("體積: ", self.volume()) # 測試 point = Point(0, 0) circle = Circle(1, 2, 5) sphere = Sphere(3, 4, 6) cylinder = Cylinder(5, 6, 3, 8) cone = Cone(7, 8, 4, 10) print("點:") point.display() print("-----------------") print("圓:") circle.display() print("-----------------") print("球:") sphere.display() print("-----------------") print("圓柱:") cylinder.display() print("-----------------") print("圓錐:") cone.display()