竞赛题目、求牛人解答、
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