📄 duoziyuanyihang.cpp
字号:
#include<iostream.h>
#define N 3
#define M 4
int R[N],A[M][N],V[N],C[M][N],flag[M]={0,0,0,0},k,h=0,g=0;//k2=0;
bool f;
bool judge(int a[4][3],int c[4][3],int v[3])
{
for(int k1=0;k1<4;k1++)
for(int i=0;i<4;i++)
{ k=0;
for(int j=0;j<3;j++)
if(flag[i]==0)
{
if(c[i][j]>v[j])
{ k=1;
break;
}
}
else k=1;
if(k==0)
{ flag[i]=1;
h++;
cout<<"P"<<i<<" ";
for(int g=0;g<3;g++)
v[g]+=a[i][g];
}
}
if(h==4)
{
cout<<"可行顺序";
return true;
}
else {cout<<"死锁!";
cout<<h<<endl;
return false;
}
}
void stop(int i)
{for(int j=0;j<N;j++)
{V[j]+=A[i][j];
C[i][j]+=A[i][j];
A[i][j]=0;
}
}
main()
{//bool judge;
cout<<"系统资源向量:"<<endl;
for(int i=0;i<N;i++)
cin>>R[i];
cout<<"可用资源向量:"<<endl;
for(i=0;i<N;i++)
cin>>V[i];
cout<<"分配矩阵:"<<endl;
for(i=0;i<M;i++)
for(int j=0;j<N;j++)
cin>>A[i][j];
cout<<"请求矩阵:"<<endl;
for(i=0;i<M;i++)
for(int j=0;j<N;j++)
cin>>C[i][j];
cout<<judge(A,C,V);
//if(!judge(A,C,V))
while(1)
{if(!judge(A,C,V))
cout<<"输入你想结束的资源编号"<<endl;
cin>>g;
stop(g);
//k2++;
if(judge(A,C,V))break;
if(!judge(A,C,V) && V[0]==R[0] && V[1]==R[1] && V[2]==R[2]){ cout<<"系统无法实现"<<endl;break;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -