www.pudn.com > bankertest.rar > Banker.c


#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(""); 
}