zoukankan      html  css  js  c++  java
  • 100c之53:说谎族和诚实族

    Table of Contents

    问题

    说谎族和诚实族是两个不同的民族。说谎族永远说谎话,诚实族永远说实话。谜语博士是个聪明人他要发现谁是说谎族谁是诚实族。谜语博士问了三个人。第一个人说:我们中有两个来自诚实族。第二个人说:我们中有一个来自诚实族。第三个说:我们中有一个来自诚实族。 问:他们三个到底来自什么族?

    分析

    每个人说话只有可能状态:诚实或者说谎。

    程序

     1:  /**
     2:   * @file   053c.c
     3:   * @author Chaolong Zhang <emacsun@163.com>
     4:   * @date   Fri Jul 12 19:09:55 2013
     5:   * 
     6:   * @brief  说谎族和诚实族是两个不同的民族。说谎族永远说谎话,诚实族永远说实话。谜语博士是个聪明人他要发现谁是说谎族谁是诚实族。谜语博士问了三个人。第一个人说:我们中有两个来自诚实族。第二个人说:我们中有一个来自诚实族。第三个说:我们中有一个来自诚实族。
     7:   *  问:他们三个到底来自什么族?
     8:   * 
     9:   */
    10:  
    11:  #include <stdio.h>
    12:  #define N 2
    13:  
    14:  int main(int argc, char *argv[])
    15:  {
    16:      int a,b,c;
    17:  
    18:      for (a=0; a < N; ++a){
    19:          for (b = 0; b < N; ++b){
    20:              for (c = 0; c < N; ++c){
    21:                  if ( ( ( a&&( a+b+c==2 ) ) || ( !a &&( a+b+c!=2 ) )  ) &&
    22:                       ( ( b&&( a+b+c==1 ) ) || ( !b &&( a+b+c!=1 ) )  ) &&
    23:                       ( ( c&&( a+b+c==1 ) ) || ( !c &&( a+b+c!=1 ) )  )){
    24:                      printf ("a is %s
    ",a?"honest":"lie");
    25:                      printf ("b is %s
    ",b?"honest":"lie");
    26:                      printf ("c is %s
    ",c?"honest":"lie");
    27:                  }
    28:              }
    29:          }
    30:      }
    31:      return 0;
    32:  }
    

    结果

    a is lie
    b is lie
    c is lie  
    
  • 相关阅读:
    属性选择器(通常用在input)
    函数调用的文档注释
    List集合操作
    数组排序三种方法
    字符串反序输出字符串
    js中完美运动框架
    查找100-200之间是否存在水仙花数
    提示用户输入一个正整数,如果错误,则重新输入,可以使用以下的代码来保证用户输入正确:
    Ubuntu 16.10下的 jdk 1.8.0_111
    方法内部类
  • 原文地址:https://www.cnblogs.com/chaolong/p/3187087.html
Copyright © 2011-2022 走看看