zoukankan      html  css  js  c++  java
  • 100c之54: 说谎族,诚实族和两面族

    Table of Contents

    问题

    两面族是岛上除了说谎族和诚实族外的新民族,他们的特点是说话真假交替。一句谎话接着一句真话或者一句真话接着一句谎话。但是第一句是真还是假难以讲清楚。 谜语博士遇到了三个人,他问左边的人:中间是什么族?左边的回答:诚实族。他问中间:你是什么民族?中间的回答:两面族。他又问右边:中间的人到底是什么民族?右边的回答: 说谎族。请问这三个到底是什么民族的。

    分析

    每个人都有三个状态。穷举加上约束条件就ok啦。

    程序

     1:  /**
     2:   * @file   054c.c
     3:   * @author Chaolong Zhang <emacsun@163.com>
     4:   * @date   Sun Jul 14 13:23:28 2013
     5:   * 
     6:   * @brief  两面族是岛上除了说谎族和诚实族外的新民族,他们的特点是说话真假交替。一句谎话接着一句真话或者一句真话接着一句谎话。但是第一句是真还是假难以讲清楚。
     7:   * 谜语博士遇到了三个人,他问左边的人:中间是什么族?左边的回答:诚实族。他问中间:你是什么民族?中间的回答:两面族。他又问右边:中间的人到底是什么民族?右边的回答:
     8:   * 说谎族。请问这三个到底是什么民族的。
     9:   */
    10:  
    11:  #include <stdio.h>
    12:  #define N 3 /// 0 stands for lying; 1 for being honest; 2 for double-dealer 
    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==0 )&&( b!=1 ) || ( a==1 )&&( b==1 ) || ( a==2 )) &&  
    22:                       (  b!=1  )  &&
    23:                       ( ( c==0 )&&( b!=0 ) || ( c==1 )&&( b==0 ) || ( c==2 ))){
    24:                      printf ("%d,%d,%d
    ",a,b,c);
    25:                  }
    26:              }
    27:          }
    28:      }
    29:      return 0;
    30:  }
    31:  
    

    结果

    0,0,1
    0,0,2
    0,2,0
    0,2,2
    2,0,1
    2,0,2
    2,2,0
    2,2,2 
    
  • 相关阅读:
    win7下的vxworks总结
    ubuntu 无法获得锁 /var/lib/dpkg/lock
    项目中用到了的一些批处理文件
    win7下安装 WINDRIVER.TORNADO.V2.2.FOR.ARM
    使用opencv统计视频库的总时长
    January 05th, 2018 Week 01st Friday
    January 04th, 2018 Week 01st Thursday
    January 03rd, 2018 Week 01st Wednesday
    January 02nd, 2018 Week 01st Tuesday
    January 01st, 2018 Week 01st Monday
  • 原文地址:https://www.cnblogs.com/chaolong/p/3189423.html
Copyright © 2011-2022 走看看