100c之51:谁是小偷

问题

警察审问四个嫌疑犯。这四个嫌疑犯中只有一个小偷。甲说:乙没偷,是丁偷的。乙说:我没偷,是丙偷的。丙说:甲没偷,是乙偷的。丁说:我没偷。请根据这四句话判断是谁偷的。

分析

每个人只有两种状态:偷或者没偷。

程序

 1:  /**
 2:   * @file   051c.c
 3:   * @author Chaolong Zhang <emacsun@163.com>
 4:   * @date   Wed Jul 10 22:34:33 2013
 5:   * 
 6:   * @brief  警察审问四个嫌疑犯。这四个嫌疑犯中只有一个小偷。甲说:乙没偷,是丁偷的。乙说:我没偷,是丙偷的。丙说:甲没偷,是乙偷的。丁说:我没偷。请根据这四句话判断是谁偷的。
 7:   * 
 8:   * 
 9:   */
10:  
11:  #include <stdio.h>
12:  
13:  #define N 2
14:  int main(int argc, char *argv[])
15:  {
16:      int a,b,c,d;
17:      for (a=0; a < N; ++a){
18:          for (b=0; b < N; ++b){
19:              for (c=0; c < N; ++c){
20:                  for (d=0; d < N; ++d){
21:                      if (( a+b==1 ) && ( b+d==1 ) && ( b+c==1 ) && ( a+b+c+d ==1 )){
22:                          printf ("%d,%d,%d,%d\n",a,b,c,d);
23:                      }
24:                  }
25:              }
26:          }
27:      }
28:      return 0;
29:  }

结果

0,1,0,0  

知:B是小偷。其实这个题目可以用矩阵的特征向量来分析。

转载于:https://www.cnblogs.com/chaolong/p/3183027.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值