banker.txt
上传用户:pcon123456
上传日期:2022-07-14
资源大小:1k
文件大小:1k
源码类别:

操作系统开发

开发平台:

C/C++

  1. #include"math.h"
  2. #include"stdio.h"
  3. void main()
  4. {
  5. int allocation[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};
  6. int Need[5][3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};
  7. int available[3]={3,3,2};
  8. int Finish[5]={0,0,0,0,0};
  9. int p[5];
  10. int num;
  11. int k=-1;
  12. label1: for(int i=0;i<5;i++)
  13. {
  14.    
  15.    num=0;
  16.         if(Finish[i]==0)
  17.    {
  18.     for( int j=0;j<3;j++)
  19.          {
  20.           if(Need[i][j]<=available[j])
  21.            num++;
  22.          }
  23.       if(num==3)
  24.         {
  25.          for( int j=0;j<3;j++)
  26.         {available[j]=available[j]+allocation[i][j];}
  27.          Finish[i]=1;
  28.           k++;
  29.           p[k]=i+1;
  30.           if(k<4)
  31.           {goto label1;}
  32.         }
  33.    }
  34. }
  35. if(k<4)
  36.        printf("无安全序列");
  37. else
  38.            {
  39.           printf("存在安全序列其顺序为:");
  40.               for(int a=0;a<5;a++)
  41.   {printf("%d->",p[a]) ;}
  42.            }
  43.        
  44. }