#includeusing namespace std; const int M=5; // 进程数 const int N=3; // 资源数 // 最大需求矩阵 m*n矩阵定义m个进程对n类资源的最大需求量 int Max[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}}; // 可用资源向量 长度为n的数组表示系统中n类资源的当前可用数目 int Available[N]={3,3,2}; // 已分配资源矩阵 m*n矩阵定义了每个进程现在已分配到的各类资源的实际数目 int Allocation[M][N]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}}; // 需求矩阵 m*n矩阵表示每个进程还需要的各类资源的数目 int Need[M][N]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}}; int Request[N]={0,0,0}; // 当前资源分配情况 void show(){ int i,j; cout<<"系统可用的资源数为:"< Work[j]){ flag=false; } } }else{ continue; } if(flag){ return i; } } return -1; } bool check(){ int Work[N]={Available[0],Available[1],Available[2]}; bool Finish[M]={false}; while(1){ int i=find(Work,Finish); if(i==-1){ break; } // 进程Pi释放所占的全部资源 for(int j=0;j >k; if(k==-1){ exit(0); } memset(Request,0,sizeof(Request)); cout<<"请输入N中资源的请求数量: "; for(int j=0;j >Request[j]; } for(int j=0;j Need[k][j]){ cout<<"进程Pi对资源的请求量已超过其说明的最大数量"; return; } if(Request[j]>Available[j]){ cout<<"系统现在没有可用的资源,进程k必须等待n"; return; } } // 系统给进程k分配所请求的资源 for(int j=0;j



