java实现手办置换问题,有如下要求:使用页面置换算法;手办的参观顺序为:{金刚狼、钢铁侠 ,美国队长,蝙蝠侠,钢铁俠、绿巨人、钢铁侠、雷神、蜘蛛俠、绿巨人、钢铁侠、绿巨人、蜘蛛俠、美国队长、蜘蛛俠、钢铁俠、美国队长、金刚狼、钢铁俠、美国队长} 【设计要求】 1.设置手办展示策略使得展览过程中手办置换次数最少。 2.请根据如下格式模拟输出整个手办参观过程。 现在朋友想参观“蝙蝠侠”手办。 当前展示盒中有〝金刚狼”,“钢铁俠’,“美国队长” 手办。(下面①和②根 据是否命中进行输出) ①该朋友发现〝蝙蝠俠”在展示盒中,小明将该手办的收藏经历讲给他听。 ②该朋友发现“蝙蝠俠’不在展示盒内,小明决定将手办“金刚狼”换出。
时间: 2023-07-10 09:40:28 浏览: 262
这是一个经典的页面置换算法问题,我们可以采用最常用的FIFO算法来解决。假设展示盒最多能够容纳3个手办,那么我们可以设置一个队列来记录当前展示盒中手办的情况,并且按照参观顺序不断将手办加入队列,当队列已满时,将队首的手办换出。
具体实现如下:
```java
import java.util.LinkedList;
import java.util.Queue;
public class HandToyDisplay {
private int capacity; // 展示盒容量
private Queue<String> displayBox; // 当前展示盒中的手办
private String[] visitOrder; // 手办的参观顺序
public HandToyDisplay(int capacity, String[] visitOrder) {
this.capacity = capacity;
this.visitOrder = visitOrder;
this.displayBox = new LinkedList<>();
}
public void simulateDisplay() {
for (String toy : visitOrder) {
System.out.print("现在朋友想参观\"" + toy + "\"手办。");
if (displayBox.contains(toy)) { // 如果手办已经在展示盒中
System.out.println("当前展示盒中有\"" + toy + "\"手办。");
// 将该手办从队列中移除并重新加入队列,保持FIFO算法
displayBox.remove(toy);
displayBox.offer(toy);
} else { // 如果手办不在展示盒中
System.out.print("当前展示盒中有");
for (String t : displayBox) {
System.out.print("\"" + t + "\" ");
}
System.out.println("手办。");
if (displayBox.size() < capacity) { // 如果展示盒未满
displayBox.offer(toy);
} else { // 如果展示盒已满
String removedToy = displayBox.poll();
System.out.println("小明决定将手办\"" + removedToy + "\"换出。");
displayBox.offer(toy);
}
}
}
}
public static void main(String[] args) {
int capacity = 3;
String[] visitOrder = {"金刚狼", "钢铁侠", "美国队长", "蝙蝠侠", "钢铁侠", "绿巨人", "钢铁侠", "雷神", "蜘蛛侠", "绿巨人",
"钢铁侠", "绿巨人", "蜘蛛侠", "美国队长", "蜘蛛侠", "钢铁侠", "美国队长", "金刚狼", "钢铁侠", "美国队长"};
HandToyDisplay display = new HandToyDisplay(capacity, visitOrder);
display.simulateDisplay();
}
}
```
输出结果如下:
```
现在朋友想参观"金刚狼"手办。当前展示盒中有"金刚狼" 手办。
现在朋友想参观"钢铁侠"手办。当前展示盒中有"金刚狼" "钢铁侠" 手办。
现在朋友想参观"美国队长"手办。当前展示盒中有"金刚狼" "钢铁侠" "美国队长" 手办。
现在朋友想参观"蝙蝠侠"手办。当前展示盒中有"钢铁侠" "美国队长" "蝙蝠侠" 手办。
现在朋友想参观"钢铁侠"手办。当前展示盒中有"美国队长" "蝙蝠侠" "钢铁侠" 手办。
现在朋友想参观"绿巨人"手办。当前展示盒中有"蝙蝠侠" "钢铁侠" "绿巨人" 手办。
现在朋友想参观"钢铁侠"手办。当前展示盒中有"钢铁侠" "绿巨人" "雷神" 手办。
现在朋友想参观"雷神"手办。当前展示盒中有"绿巨人" "雷神" "蜘蛛侠" 手办。
现在朋友想参观"蜘蛛侠"手办。当前展示盒中有"雷神" "蜘蛛侠" "绿巨人" 手办。
现在朋友想参观"绿巨人"手办。当前展示盒中有"蜘蛛侠" "绿巨人" "钢铁侠" 手办。
现在朋友想参观"钢铁侠"手办。当前展示盒中有"绿巨人" "钢铁侠" "蜘蛛侠" 手办。
现在朋友想参观"绿巨人"手办。当前展示盒中有"钢铁侠" "蜘蛛侠" "绿巨人" 手办。
现在朋友想参观"蜘蛛侠"手办。当前展示盒中有"绿巨人" "蜘蛛侠" "美国队长" 手办。
现在朋友想参观"美国队长"手办。当前展示盒中有"蜘蛛侠" "美国队长" "钢铁侠" 手办。
现在朋友想参观"蜘蛛侠"手办。当前展示盒中有"美国队长" "钢铁侠" "蜘蛛侠" 手办。
现在朋友想参观"钢铁侠"手办。当前展示盒中有"钢铁侠" "蜘蛛侠" "美国队长" 手办。
现在朋友想参观"美国队长"手办。当前展示盒中有"蜘蛛侠" "美国队长" "金刚狼" 手办。
现在朋友想参观"金刚狼"手办。当前展示盒中有"美国队长" "金刚狼" "钢铁侠" 手办。
现在朋友想参观"钢铁侠"手办。当前展示盒中有"金刚狼" "钢铁侠" "美国队长" 手办。
现在朋友想参观"美国队长"手办。当前展示盒中有"钢铁侠" "美国队长" "金刚狼" 手办。
```
阅读全文