任何一个组合不能是另一个组合的子集,而且一个人最多会三项技能,且四个人中只有一个人会三项技能(若有两个以上必存在一个组合是另一个的子集),根据已有的信息,A至少要会两种技能,不能是web,这样就剩两种选择分类讨论即可
| Java | 数据库 | Web | C++ |
A | ⊙ | ⊙ | ⊗ | ⊗ |
B | ⊙ | ⊗ | ⊙ | ⊙ |
C | ⊗ | ⊙ | ⊙ | ⊗ |
D | ⊗ | ⊙ | ⊗ | ⊙ |
| Java | 数据库 | Web | C++ |
A | ⊙ |
|
| |
B | ⊙ |
| ⊙ |
|
C |
| ⊙ | ⊙ |
|
D |
| ⊙ |
| ⊙ |
| Java | 数据库 | Web | C++ |
A | ⊙ | ⊙ | ⊗ | ⊗ |
B | ⊙ | ⊗ | ⊙ | ⊙ |
C | ⊗ | ⊙ | ⊙ | ⊗ |
D | ⊗ | ⊙ | ⊗ | ⊙ |
初始:
| A | B | C | D |
1 Java | √ | √ |
|
|
2 SQL |
|
| √ | √ |
3 Web |
| √ | √ |
|
4 C++ |
|
|
| √ |
已有会 1,2 ; 2,3 ; 2,4 组合的;还差 1,4 ; 1,2 ; 3,4
先看 1,4 都会的: A 、 B 、 D 会 1,4 不会与其他的冲突,暂时无法确定哪个会 1,4 。但 C 不行:将与 D 重复(导致 C 和 D 都会 2 和 3 ,与条件不符)
看 1,2 都会的: A,D 都有可能
看 3,4 都会的:只能是 B (也包含了 1,4 都会的)。若是 A :与 B 重了,若是 C :与 D 重了,若是 D :与 C 重了
| A | B | C | D |
1 Java | √ | √ |
|
|
2 SQL |
|
| √ | √ |
3 Web |
| √ | √ |
|
4 C++ |
| √ |
| √ |
再看 1,2 都会的:只能是 A
| A | B | C | D |
1 Java | √ | √ |
|
|
2 SQL | √ |
| √ | √ |
3 Web |
| √ | √ |
|
4 C++ |
| √ |
| √ |