#include"stdafx.h"
#include<iostream>
#include<string>
using namespace std;
static int n;
int *a;
int *b;
int num=0;
int count;
string s;
int max(){
int max=b[0];
int maxNo=0;
for(int i=1;i<n;i++){
if(b[i]>max){
max=b[i];
maxNo=i;
}
}
return maxNo;
}
void LRU(){
bool flag;
int np; //当前访问页面
int t;
count=s.length();
cout<<"完成时间:"<<count<<endl;
for(int i=0;i<n;i++){
b[i]=0;
a[i]=NULL;
}
for(int i=0;i<count;i++){
flag=false;
np=(int)s[i]-'0';
for(int j=0;j<n;j++){
b[j]++;
if(a[j]==np){
b[j]=0;
flag=true;
cout<<"T";
}
}
if(!flag){
num++;
t=max();
a[t]=np;
b[t]=0;cout<<"0";
}
}
}
void main(){
cout<<"请输入分配给该进程的页块数:"<<endl;
cin>>n;
a=new int[n];
b=new int[n];
cout<<"请输入页面访问序列:"<<endl;
cin>>s;
LRU();
cout<<"缺页数:"<<num<<endl;
cout<<"缺页率:"<<(num-n)*100/count<<"%"<<endl;
system("pause");
}