V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
frozenshadow
V2EX  ›  程序员

请教大家一个算法问题

  •  
  •   frozenshadow · 2015-09-24 12:39:28 +08:00 · 3040 次点击
    这是一个创建于 3348 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


    例如:四人中三真一假

    A: B 说的是假话

    B: A 的话不可信

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

    D : C 说的对

    推理得出 B 在说假话

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

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

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

    感谢指教~~~昨天干活去了,才上来看到 ,我去学习学习~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2706 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:11 · PVG 23:11 · LAX 07:11 · JFK 10:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.