zoukankan      html  css  js  c++  java
  • 100c之52:黑与白

    Table of Contents

    问题

    黑与白:有A,B,C,D,E五个人每人额头上都贴着一张纸牌:要么为黑色,要么为白色。

    • 每个人都能看到别人的颜色但是看不到自己的颜色。五人相互观察后
    • A说:我看到三人为白,一人为黑。
    • B说:我看到四人全黑。
    • C说:我看到三人为黑,一人为白。
    • D说:我看到四人全白。
    • E说:我不发表任何意见。现在已知:贴黑牌的说的都是谎话,白牌的人说的是实话。
    • 请问他们各自都是什么颜色的牌。

    分析

    每个人头上的牌有两种颜色,而且这两种颜色跟该人是否说谎是一一对应的。所以用穷据的方法就可以找出每个人头上牌的颜色。

    程序

     1:  /**
     2:   * @file   052c.c
     3:   * @author Chaolong Zhang <emacsun@163.com>
     4:   * @date   Thu Jul 11 14:16:49 2013
     5:   * 
     6:   * @brief  黑与白:有A,B,C,D,E五个人每人额头上都贴着一张纸牌:要么为黑色,要么为白色。
     7:   *         每个人都能看到别人的颜色但是看不到自己的颜色。五人相互观察后
     8:   *         A说:我看到三人为白,一人为黑。
     9:   *         B说:我看到四人全黑。
    10:   *         C说:我看到三人为黑,一人为白。         
    11:   *         D说:我看到四人全白。
    12:   *         E说:我不发表任何意见。现在已知:贴黑牌的说的都是谎话,白牌的人说的是实话。
    13:   *         请问他们各自都是什么颜色的牌。
    14:   */
    15:  
    16:  #include <stdio.h>
    17:  
    18:  #define N 2
    19:  int main(int argc, char *argv[])
    20:  {
    21:      int a,b,c,d,e;
    22:  
    23:      for (a=0; a < N; ++a){
    24:          for (b=0; b < N; ++b){
    25:              for (c=0; c < N; ++c){
    26:                  for (d=0; d < N; ++d){
    27:                      for (e=0; e < N; ++e){
    28:                          if ( ( ( !a && ( b+c+d+e==1 ) ) || ( a&& ( b+c+d+e !=1 ) ) ) &&
    29:                               ( ( !b && ( a+c+d+e==4 ) ) || ( b&& ( a+c+d+e !=4 ) ) ) &&
    30:                               ( ( !c && ( a+b+d+e==3 ) ) || ( c&& ( a+b+d+e !=3 ) ) ) &&
    31:                               ( ( !d && ( a+b+c+e==0 ) ) || ( d&& ( a+b+c+e !=0 ) ) )){
    32:                              printf ("A is wearing %s
    ", a?"black":"white");
    33:                              printf ("B is wearing %s
    ", b?"black":"white");
    34:                              printf ("C is wearing %s
    ", c?"black":"white");
    35:                              printf ("D is wearing %s
    ", d?"black":"white");
    36:                              printf ("E is wearing %s
    ", e?"black":"white");
    37:                          }
    38:                      }
    39:                  }
    40:              }
    41:          }
    42:      }
    43:      return 0;
    44:  }
    

    结果

    A is wearing black
    B is wearing black
    C is wearing white
    D is wearing black
    E is wearing white  
    
  • 相关阅读:
    [转]ion-slide-box
    [转]Ionic 实现双击返回键退出功能
    [转]highcharts图表入门之:如何让highcharts图表自适应浏览器窗体的大小或者页面大小
    [转]ionic Accordion list three levels
    [转]ionic $state.go passed $stateParams
    [转]ionic tab view hide tab bar
    [转]Ionic + AngularJS angular-translate 国际化本地化解决方案
    [转]Ionic Datepicker
    [转]通过AngularJS directive对bootstrap日期控件的的简单包装
    [转]轻松学习Ionic (四) 修改应用图标及添加启动画面(更新官方命令行工具自动生成)
  • 原文地址:https://www.cnblogs.com/chaolong/p/3183929.html
Copyright © 2011-2022 走看看