标题用BASIC语言解决逻辑推理题目
栏目软件操作与技巧
作者蒲小勤
发布1994-01-14
某地发生了一件凶杀案,凶手是A、B、C、D、E、F6人中之一.L说:凶手非A即B;M说:凶手绝不是C;N说:案发时A、B正在他家。已知L、M、N三人只有一人说对,请问谁是凶手?
解决这个问题时,关键在于对L、M、N三人的话进行分析,所以应对L、M、N三人的话建立逻辑表达式,然后用穷举法找出符合要求的情况。
这里逻辑值为真。用-1表示,假用0表示。假设某人是凶手为-1;不是凶手为0,现在可以列出L、M、N三人的逻辑表达式:L=(A=-1AND B=0) OR(A=0 AND B=-1)
M=(C=0)
N=(A=0 ANDB=0)
另外,用L+M+N=-1表示三人中只有一人说对,用A+B+C+D+E+F=-1表示6人中只有一人是凶手。程序如下:
10 FOR A=-1 TO 0
20 FOR B=-1 TO 0
30 FOR C=-1 TO 0
40 FOR D=-1 TO 0
50 FOR E=-1 TO 0
60 FOR F=-1 TO 0
70 L=(A=-1 AND B=0) OR (A=0 AND B=-1)
80 M=(C=0)
90 N=(A=0 AND B=0)
95 IF L+M+N=-1 AND A+B+C+D+E+F=-1 THEN PRINT :PRINT "A";"B";"C";"D";"E";"F":PRINT A;B;C;D;E;F
100 NEXT F
110 NEXT E
120 NEXT D
130 NEXT C
140 NEXT B
150 NEXT A
160 END
运行结果:A B C D E F
0 0-1 0 0 0
可见,C就是凶手!
掌握这种分析方法,你还可以解决更复杂的推理问题,你的电脑就会成为一位“推理专家”!