实验内容
有A、B、C、D和E共5所学校。在一次检查评比中,已知E校肯定不是第2名或第3名,他们互相进行推测,A校有人说,E校一定是第1名;B校有人说,我校可能是第2名;C校有人说,A校最差;D校有人说,C校不是最好的;E校有人说,D校会获得第1名。结果只有第1名和第2名的学校的人猜对了。编写一个程序求出这5所学校的名次。
编程要求
为了防止不同的学校取相同的名次,设立了一个数组x[],x[i]为0(假)表示已有某校取了第i名。
最简单的方法,先自己逻辑推理,然后把推理过程写下来,最后把数学逻辑写成程序。
虽然这种方式不符合计算机语言的逻辑,但是很有效。
数学逻辑:先写下,当各校推测为真时,其语句对应的结果,当各校推测为假时,其语句对应的结果(对应5个小函数),然后抽取2条为真,以此为基础检测其余是否符合其余均为假,且E校肯定不是第2名或第3名的条件。
最无脑的方式,最符合机器人的方式,全排列循环,然后根据前两名为真,对六个条件求交,六个都满足break,输出