日期:2014-05-20  浏览次数:20738 次

竞赛题目、求牛人解答、
A、B、C、D、E、F、G、H、I、J 共10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束:
  1. 如果A参加,B也参加;
  2. 如果C不参加,D也不参加;
  3. A和C中只能有一个人参加;
  4. B和D中有且仅有一个人参加;
  5. D、E、F、G少、H 中至有2人参加;
  6. C和G或者都参加,或者都不参加;
  7. C、E、G、I中至多只能2人参加  
  8. 如果E参加,那么F和G也都参加。
  9. 如果F参加,G、H就不能参加
  10. 如果I、J都不参加,H必须参加
请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能情况。每种情况占一行。参赛同学按字母升序排列,用空格分隔。
比如:
C D G J
就是一种可能的情况。


------解决方案--------------------
版本1:
先挑出1L的一点小毛病先。

首先介绍一种逻辑联结词:蕴涵联结词,一般表示形如“如果……就……”的联结词,表示递推的逻辑关系。(数理逻辑的课本上有,不同的版本可能有不同的名称,在下这里只简要介绍下)
符号表示:A->B(如果A就B)
真值表:
C/C++ code

A   B   A->B
0   0    1
0   1    1
1   0    0
1   1    1