页面淘汰——先进先出算法
作者:互联网
前言:
我只是通过网课用例和老师的用例,正确性不能保证hh(非常害怕误导大家
就算错了也许也能给大家提供思路~
算法描述
其实就是环形队列啊!每次把最开始进来的踢出去就好了,easy~
输入用例描述
网课输入用例
3
12
A B C D A B E A B C D E
实验给的用例
3
20
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
4
12
4 3 2 1 4 3 5 4 3 2 1 5
5
11
4 7 0 7 1 0 1 2 1 2 6
实现代码
#include<iostream>
using namespace std;
const int N = 100;
char q[N];
char cache[N];
int hh = -1;//队头指针
int main()
{
printf("软件202 唐熙\n");
int size, n, num = 0;//size表示cache大小,n表示输入页数,num表示中断次数
cin >> size >> n;
for (int i = 0; i < n; i++)
cin >> q[i];
for (int i = 0; i < n; i++)
{
cout << "当前cache数组:";
for (int i = 0; i < size; i++)
cout << cache[i] << " ";
cout << endl;
int pause = 1, j;
for (j = 0; j < size; j++)//看看cache里面有没有当前页面,有的话不用管
if (q[i] == cache[j])
pause = 0;
if (pause)//没有的话
{
num++;
if (hh == size - 1)
hh = -1;
cache[++hh] = q[i];
}
}
cout << "当前cache数组:";
for (int i = 0; i < size; i++)
cout << cache[i] << " ";
cout << endl;
cout << "缺页次数:" << num << " 缺页率:" << double(num) / n;
return 0;
}
网课运行结果
实验用例运行结果
标签:int,cin,网课,char,用例,算法,页面,先进先出,size 来源: https://www.cnblogs.com/tangxibomb/p/16282750.html