用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就是凶手! 掌握这种分析方法,你还可以解决更复杂的推理问题,你的电脑就会成为一位“推理专家”!