为什么运行无法得到结果,检测也没有错误
利用结构化程序设计思想,完成一个解“100个囚犯和灯泡”问题的程序。问题描述如下,有 100 个囚犯分别关在 100 间牢房里。牢房外有一个空荡荡的房间,房间里有一个由开关控制的灯泡。初始时,灯是关着的(或者随机)。看守每天随便选择一名囚犯进入房间,但保证每个囚犯都会被选中无穷多次。如果在某一时刻,有囚犯成功断定出所有人都进过这个房间了,所有囚犯都能释放。游戏开始前,所有囚犯可以聚在一起商量对策,但在此之后它们唯一可用来交流的工具就只有那个灯泡。他们应该设计一个怎样的协议呢?请根据此协议设计实现一个程序,把解题过程详细输出并给出解题所需天数。
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
typedef struct node
{
int b;
}NODE;
int main()
{
int s=0,h=0,c=1;
int p,t,m=1;//m天数,n囚犯编号[1,1],c计数,h灯泡状态1为开,s为计数人
srand((unsigned)time(NULL));
NODE n[100];
for (p=0;p=99;p++) n[p].b=0;
t=rand()%100;
s=t;
printf("天数=%d,次数=%d",m,c);
m=m+1;//初始状态未开灯,设置第一个进入囚犯为计数人,计数1;
while (c!=100)
{
t=rand()%100;
if (s==t)
{
if (h==1)
{
c=c+1;
h=0;
printf("天数=%d,计数=%d\n",m,c);
}
}
else if (s!=n[t].a)
{
if (n[t].b==0&&h==0)
{
h=1;
m=m+1;//非计数人未开过灯进入并开灯。
}
else m=m+1;
}
}
printf("最终天数=%d\n",m);
return 0;
}