• 请不要在回答技术问题时复制粘贴 AI 生成的内容
frozenshadow
V2EX  ›  程序员

请教大家一个算法问题

  •  
  •   frozenshadow · Sep 24, 2015 · 4285 views
    This topic created in 4063 days ago, the information mentioned may be changed or developed.

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

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


    例如:四人中三真一假

    A: B 说的是假话

    B: A 的话不可信

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

    D : C 说的对

    推理得出 B 在说假话

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

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

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

    感谢指教~~~昨天干活去了,才上来看到 ,我去学习学习~
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   501 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 21:25 · PVG 05:25 · LAX 13:25 · JFK 16:25
    ♥ Do have faith in what you're doing.