#include #include#include#include#include#include#include
#define N 200
using namespacestd;int page[N];//页面引用号
int block[N];//物理块,内存
int dist[N][N];//表示第i次访问内存的时候,内存中的页面j 在以后被访问的最小时间
int n;//页面引用号个数
int m;//物理块数目
int page_max;//最大页面号
int pre[N];//page[i]在page中的索引
int opt(){//最佳页面置换算法
int page_lack = 0;
memset(pre,0, sizeof(pre));
memset(dist,0x3f, sizeof(dist));
memset(block,-1, sizeof(block));for(int i=n; i>=1; --i){for(int j=0; j<=page_max; ++j)if(pre[j])
dist[i][j]= pre[j] -i;
pre[page[i]]=i;
}for(int i=1; i<=n; ++i){//开始访问页面,初始是内存中没有分页
intj;int max_dist = 0, p;for(j=1; j<=m; ++j){if(block[j] == -1){//改块没有放入页面,则直接放入, 产生缺页
block[j] =page[i];
cout<