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 
    
  • 相关阅读:
    HDU 1847
    HDU 1717
    KMP未优化模板、
    Codeforces Round #340 (Div. 2) B. Chocolate
    HDU 1042 N!
    HDU 1018 Big Number
    HDU 1031 Design T-Shirt
    解决Windows 7删除执行过的 EXE、Bat文件有延迟的问题
    修改Android手机的“虚拟机堆大小”和android:largeHeap来防止APP内存溢出问题
    Android引用百度定位API第三方组件后导致其它.so文件无法正常加载的问题
  • 原文地址:https://www.cnblogs.com/chaolong/p/3189423.html
Copyright © 2011-2022 走看看