banker.c

来自「银行家算法的实例」· C语言 代码 · 共 76 行

C
76
字号
#define n 5
#define m 3

int safe(int * Work);


{
	int Finish[]={0,0,0,0,0};
	int sum=0;
	int count=0;
	int i,j;
	while(sum!=n)
	{
		for(i=0;i<=n-1;i++)
		{
			for(j=0;j<=m-1;j++)
				if(Finish[i]==0&&Need[i][j]<=Available[j])
                count++;
				if(count==m)
				{
					for(j=0;j<=m-1;j++)
                    Available[j]=Available[j]+Allocation[i][j];
					Work[i][j]=Available[j];
					Finish[i]=1;
				}
		}
		sum++;
	}
	if(sum==n) return 1;
	else return 0;
}

main()
{
	int Allocation[n][m]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};
	int Need[n][m]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};
	int Available[m]={3,3,2};
	int Request[m];
	int Work[n][m];
	int t,k;
	for(t=0;t<=n-1;t++)
	for(k=0;k<=m-1;k++)
	{
		if(t==0)
		{
			Work[t][k]=Available[k];
		}
		else
		Work[t][k]=0;
	}
//if(safe(Work,Need,Allocation,Available))
	/*{
		scanf("%d",&i);
		while(i!=(n+1))
		{
			for(int j=0;j<=m-1;j++)
			scanf("%d",&Request[j]);
			if(Request[j]<=Need[i][j]&&Request[j]<=Available[j])
			{
				Give(Work,Need,Allocation,Available);
				if(System_safe(Work,Need,Allocation,Available))
					printf("分配成功");
				else
				{
					printf("分配不成功");
                    Last(Work,Need,Allocation,Available);
				}

			}
			else printf("所请求的资源不合法");
            scanf("%d",&i);*/
//printf("");
}


	

⌨️ 快捷键说明

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