现有 A B C D 四人,这四人的话有真有假。
条件会给出这四人中有几真几假。
例如:四人中三真一假
A: B 说的是假话
B: A 的话不可信
C :如果 A 在骗你,那么 C 也在骗你
D : C 说的对
小弟想请教下这类算法是什么算法(算法渣,没有关键词搜不出靠谱的东西)
或者那位大神指教一下,谢谢~
1
frozenshadow OP 能不能先假设 A 为真,然后得出 A 为真时四人中几真几假。然后假设 B 为真时,四人中几真几假……最后再和已知条件进行对比?? ps.为什么感觉这么做好蠢啊。。。
|
2
aheadlead 2015-09-24 13:03:44 +08:00 1
枚举验证就好了
|
3
ninechapter 2015-09-24 13:06:37 +08:00
逻辑正则表达式判断, 无需使用算法知识,想快速提高算法,可以来上我们的免费算法公开课: http://www.jiuzhang.com/course/1/
|
4
theJian 2015-09-24 13:15:41 +08:00 1
离散数学有讲
|
5
frozenshadow OP @aheadlead 感谢回复。枚举就是 1L 的方式吧~~
|
6
frozenshadow OP @ninechapter 发小广告的时候来点干货么~~~就是再给点提示 -_-
|
7
aheadlead 2015-09-24 13:20:09 +08:00 1
|
8
frozenshadow OP @theJian 虽然也是计算机系。。但是并没有上这课……我去看看,能稍微再给点提示么,谢谢
|
9
ChiangDi 2015-09-24 13:21:22 +08:00 1
找本离散数学的书来看,这种只有四个的还是小意思啊
|
10
frozenshadow OP @ChiangDi 好的,我去看看。谢谢
|
11
frozenshadow OP @aheadlead 感谢。^_^
|
12
lijsf 2015-09-24 14:06:46 +08:00
这个是离散数学中内容,关于命题那一章的,有关于逻辑表达式的化简,命题演算等。离散数学中有这方面的习题。答题思路就是每一个人的描述都是一个命题,从而形式化,再去化简这个逻辑表达式,得到结果。
|
13
minilyn 2015-09-24 14:12:18 +08:00
输入数据不大的话可以根据已给出的几真几假条件排列组合一下遍历得出正确解。如果输入规模足够大的话可能就需要用离散的知识解了。
|
14
dd99iii 2015-09-24 15:52:33 +08:00
三真一假,四种情况
|
15
hxndg 2015-09-24 17:14:32 +08:00
A:^B
B:^A C:^A->^C D:C |
16
iverson68214 2015-09-24 17:32:51 +08:00
a, b, c, d = False, False, False, False
a, b = False, False # A: B 说的是假话 b = True if a == False else False # B: A 的话不可信 c = False if a == False else True # C :如果 A 在骗你,那么 C 也在骗你 d = True if c == True else False # D : C 说的对 print a, b, c, d |
17
frozenshadow OP |