// 银行家算法.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
#define m 3//资源种类
#define n 4//进程个数
int i,j;
int c[n];
struct state{
int max[n][m];//最大资源需求总量
int alloc[n][m];//已分配的资源数量
int need[n][m];//还需要申请的资源数
int available[m];//剩余的资源数
}p;
bool Safe(state s);
void Output()
{printf("\n最大资源需求总量:\n");
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf("%d ",p.max[i][j]);
printf("\n");}
printf("\n");
printf("已分配的资源数量");
printf("\n");
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf("%d ",p.alloc[i][j]);
printf("\n");}
printf("还需要申请的资源R1、R2、R3数");
printf("\n");
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf("%d ",p.need[i][j]);
printf("\n");
}
printf("系统可用的资源R1、R2、R3总数");
printf("\n");
for(i=0;i<m;i++)
printf("%d ",p.available[i]);
printf("系统剩余的资源R1、R2、R3总数");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
p.available[i]=p.available[i]-p.alloc[i][j];
for(i=0;i<m;i++)
printf("%d ",p.available[i]);
}
void Input()
{ for(i=0;i<n;i++)
{printf("请输入进程 %d 所需的最大资源数R1、R2、R3:",i+1);
for(j=0;j<m;j++)
scanf("%d",&p.max[i][j]);
}
printf("\n");
for(i=0;i<n;i++)
{printf("请输入进程%d所占有的资源数R1、R2、R3:",i+1);
for(j=0;j<m;j++)
{scanf("%d",&p.alloc[i][j]);
p.need[i][j]=p.max[i][j]-p.alloc[i][j];
}