#define N 4
#define M 4
#define F 1000
int issafe(int need1[N][M],int allo1[N][M],int max1[N][M],int avai1[M])
{int need[N][M],allo[N][M],max[N][M],avai[M];
int i,j,k,flag,m=0,p[M],z;
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
{need[i][j]=need1[i][j];
allo[i][j]=allo1[i][j];
max[i][j]=max1[i][j];
}
avai[i]=avai1[i];
}
while(m<N)
{z=m;
for(i=0;i<N;i++)
{flag=1;
for(j=0;j<M;j++)
{if(need[i][j]>avai[j])
{flag=0;break;
}
}
if(flag==1)
{
for(j=0;j<M;j++)
{
max[i][j]=F;
need[i][j]=F;
}
for(j=0;j<N;j++) {avai[j]+=allo[i][j];}
p[m]=i; printf("p:%d-->",p[m]);
m++;
}
}
if(z==m) return 0;
}
return 1;
}
void printinit(int max[N][M],int allo[N][M],int need[N][M],int avai[M])
{int i,j;
printf("\nThe max\n");
for(i=0;i<N;i++)
{printf("p%d: ",i);
for(j=0;j<N;j++)
{
printf("%4d",max[i][j]);
}
printf("\n");
}
printf("\nThe allocation\n");
for(i=0;i<N;i++)
{printf("p%d: ",i);
for(j=0;j<N;j++)