瓦拉内和乌姆蒂蒂:程序结果并分析

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/09 19:51:14
请分析以下程序的结果
#i nclude <stdio.h>
void main()
{
int claim[5][3]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};
int allocation[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};
int i,j,k,l=0,count=0;
int need[5][3]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
int result[5]={-1,-1,-1,-1,-1};
int work[3]={3,3,2};
printf("all source:\n A B C\n 10 5 7\n");
printf("available:\n A B C\n 3 3 2\n");
printf("every max source:\n A B C\n");
for(i=0;i<5;i++)
{
printf("P%d: ",i);
for(j=0;j<3;j++)
{
printf(" %d ",claim[i][j]);
need[i][j]=claim[i][j]-allocation[i][j];
}
printf("\n");
}
printf("allocation:\n A B C\n");
for(i=0;i<5;i++)
{
printf("P%d: ",i);
for(j=0;j<3;j++)
printf(" %d ",allocation[i][j]);
printf("\n");
}
printf("every need:\n A B C\n");
for(i=0;i<5;i++)
{
printf("P%d: ",i);
for(j=0;j<3;j++)
printf(" %d ",need[i][j]);
printf("\n");
}

for(l=0;l<5;l++)
for(k=0;k<5;k++)
{
if(result[k]==-1&&need[k][0]<=work[0]&&need[k][1]<=work[1]&&need[k][2]<=work[2])
{
work[0]=work[0]+allocation[k][0];
work[1]=work[1]+allocation[k][1];
work[2]=work[2]+allocation[k][2];
result[k]=l;count++;
printf("P%d->",k);
}
}

if(count==5)
printf("\nit is safe!\n");
else
printf("\nit is danger\n");
}

抗议!

错误

自己输入编辑器运行一下不就行了