请教大家一个算法问题

2015-09-24 12:39:28 +08:00
 frozenshadow

现有 A B C D 四人,这四人的话有真有假。

条件会给出这四人中有几真几假。


例如:四人中三真一假

A: B 说的是假话

B: A 的话不可信

C :如果 A 在骗你,那么 C 也在骗你

D : C 说的对

推理得出 B 在说假话

小弟想请教下这类算法是什么算法(算法渣,没有关键词搜不出靠谱的东西)

或者那位大神指教一下,谢谢~

3070 次点击
所在节点    程序员
17 条回复
frozenshadow
2015-09-24 13:00:26 +08:00
能不能先假设 A 为真,然后得出 A 为真时四人中几真几假。然后假设 B 为真时,四人中几真几假……最后再和已知条件进行对比?? ps.为什么感觉这么做好蠢啊。。。
aheadlead
2015-09-24 13:03:44 +08:00
枚举验证就好了
ninechapter
2015-09-24 13:06:37 +08:00
逻辑正则表达式判断, 无需使用算法知识,想快速提高算法,可以来上我们的免费算法公开课: http://www.jiuzhang.com/course/1/
theJian
2015-09-24 13:15:41 +08:00
离散数学有讲
frozenshadow
2015-09-24 13:18:03 +08:00
@aheadlead 感谢回复。枚举就是 1L 的方式吧~~
frozenshadow
2015-09-24 13:19:21 +08:00
@ninechapter 发小广告的时候来点干货么~~~就是再给点提示 -_-
aheadlead
2015-09-24 13:20:09 +08:00
frozenshadow
2015-09-24 13:20:38 +08:00
@theJian 虽然也是计算机系。。但是并没有上这课……我去看看,能稍微再给点提示么,谢谢
ChiangDi
2015-09-24 13:21:22 +08:00
找本离散数学的书来看,这种只有四个的还是小意思啊
frozenshadow
2015-09-24 13:24:10 +08:00
@ChiangDi 好的,我去看看。谢谢
frozenshadow
2015-09-24 13:34:36 +08:00
@aheadlead 感谢。^_^
lijsf
2015-09-24 14:06:46 +08:00
这个是离散数学中内容,关于命题那一章的,有关于逻辑表达式的化简,命题演算等。离散数学中有这方面的习题。答题思路就是每一个人的描述都是一个命题,从而形式化,再去化简这个逻辑表达式,得到结果。
minilyn
2015-09-24 14:12:18 +08:00
输入数据不大的话可以根据已给出的几真几假条件排列组合一下遍历得出正确解。如果输入规模足够大的话可能就需要用离散的知识解了。
dd99iii
2015-09-24 15:52:33 +08:00
三真一假,四种情况
hxndg
2015-09-24 17:14:32 +08:00
A:^B
B:^A
C:^A->^C
D:C
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
frozenshadow
2015-09-25 12:25:56 +08:00
@lijsf
@minilyn
@dd99iii
@hxndg
@iverson68214

感谢指教~~~昨天干活去了,才上来看到 ,我去学习学习~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/223324

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX