#include<stdio.h>
#define N 100
#define M 100
int Av[M],process,resource,m=0,w=0,h=2,flag=0;
int work[M];
int Req[M];
int A[N]; //存储安全序列
int Finish[N];
int Max[N][M];
int Alo[N][M];
int Need[N][M];
int safey() //安全性算法
{
int i=0,j=0,k,c=0;
for(k=1;k<=process;k++)
A[k]=0;
for(i=1;i<=resource;i++)
work[i]=Av[i];
for(i=1;i<=process;i++)
{
for(j=1;j<=resource;j++)
if(Need[i][j]>work[j]) break;
if(Finish[i]==0&&j>resource)
{
for(k=1;k<=resource;k++)
work[k]+=Alo[i][k]; //进程i执行完释放资源
Finish[i]=1;
A[++w]=i;
c++; //c用于记录循环执行的次数
}
}
while(c<process)
{
for(i=1;i<=process;i++)
if(Finish[i]==0)
{
for(j=1;j<=resource;j++)
if(Need[i][j]>work[j]) break;
if(j>resource)
{
for(k=1;k<=resource;k++)
work[k]+=Alo[i][k];
Finish[i]=1;
A[++w]=i;
c++;
}
}
if(i>process) break;
}
for(j=1;j<=process;j++)
if(Finish[j]==0) break;
if(j>process) return 1;