⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yhjsf.txt

📁 速度看垃圾回复电话打开浪费打开了几分客服电话恐吓发动机和
💻 TXT
字号:
#include <stdio.h>
#define m 5 
#define n 3
int Available[n]={2,3,3},
    Alloc[m][n]={{2,1,2},{4,0,2},{3,0,5},{2,0,4},{3,1,4}},
    Need[m][n]={{3,4,7},{1,3,4},{0,0,3},{2,2,1},{1,1,0}};
int safe()
{
 int Finish[m]={0},work[n],i=0,j,k;
 for(j=0;j<n;j++)
  work[j]=Available[j];
 while(1)
 {
  k=1;
  for(j=0;j<n;j++)
   if(Need[i][j]>work[j]) k=0;
  if(Finish[i]==0 && k==1)
  {
   Finish[i]=1;
   printf("P%d ",i);
   for(j=0;j<n;j++)
    work[j]=work[j]+Alloc[i][j];
   i=0;
   continue;
  }
  i++;
  if(i==m) break;
 }

 for(i=0;i<m;i++)
 {
  if(Finish[i]==0)
   return 0;
 }
 return 1;
}

main()
{
 int Request[n],i,j,k;
 while(1)
 {
  scanf("%d",&i);
  if(i==0) break;
  i--;
  k=0;
  for(j=0;j<n;j++)
  {
   scanf("%d",&Request[j]);
   if (!(Request[j]<=Need[i][j]))
   {
    printf("非法请求!\n");
    k=1;
    continue;
   }
   if (!(Request[j]<=Available[j]))
   {
    printf("P%d阻塞!\n",i+1); 
    k=1;
    continue;
   }
  }

  if(k==1) continue;

  for(j=0;j<n;j++)
  {
   Available[j]=Available[j]-Request[j];
   Alloc[i][j]=Alloc[i][j]+Request[j];
   Need[i][j]=Need[i][j]-Request[j];
  }

  if(safe()==1) printf("\n已分配资源给P%d。\n",i+1);
  else
  {
   printf("新状态不安全,取消试探性分配。\n");
   for(j=0;j<n;j++)
   {
    Available[j]=Available[j]+Request[j];
    Alloc[i][j]=Alloc[i][j]-Request[j];
    Need[i][j]=Need[i][j]+Request[j];
   }
  }
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -